2010-08-25 53 views
1

我正在從example.com/test.txt下載文本文件,並且僅在我的應用運行時期間需要內容,它們不需要保存到一個靜態文件。緩存字符串中的在線文件內容而不是本地文件

到目前爲止我的代碼:

  InputStream input = new BufferedInputStream(getURL.openStream()); 
      OutputStream output = new FileOutputStream(tempFile); 

      byte data[] = new byte[1024]; 

      long total = 0; 

      while ((count = input.read(data)) != -1) { 
       output.write(data, 0, count); 
      } 

      output.flush(); 
      output.close(); 
      input.close(); 

我將如何去寫的在線文件內容爲一個字符串,而不是在本地保存文件?我曾嘗試在while語句中將data附加到String,但只是得到亂碼文本(如預期的那樣,但我不知道該怎麼辦)。將byte轉換回字符串?

感謝您的幫助!

回答

1

而不是FileOutputStream使用ByteArrayOutput流。然後您可以調用toString將其轉換爲字符串。

 InputStream input = new BufferedInputStream(getURL.openStream()); 
     OutputStream output = new ByteArrayOutputStream(); 

     byte data[] = new byte[1024]; 

     long total = 0; 

     while ((count = input.read(data)) != -1) { 
      output.write(data, 0, count); 
     } 

     output.flush(); 
     output.close(); 
     input.close(); 
     String result = output.toString(); 
+0

完美的作品,感謝您的快速回復! – Nick 2010-08-25 04:07:23

1

您可以使用類似於here所述的方法。從Java文檔

代碼片段:

URL yahoo = new URL("http://www.yahoo.com/"); 
BufferedReader in = new BufferedReader(
      new InputStreamReader(
      yahoo.openStream())); 

String inputLine; 

while ((inputLine = in.readLine()) != null) 
    System.out.println(inputLine); 

in.close(); 

你只需要每行一個字符串追加其發送到System.out代替。

+0

通過+運算符進行字符串連接並不是那麼有效。你最好使用StringBuilder。 – 2010-08-25 04:02:59

+0

也適用,謝謝:-)! – Nick 2010-08-25 04:08:03

相關問題