2012-04-02 32 views
0

我試圖使用BufferedReader緩衝文件中的內容。在這個過程中,我在下面的程序while((line = in.readLine()) != "\n")中給出了一個錯誤的約束,這給我一個不希望的輸出。使用流時,它爲什麼迴應以前的輸出?

我後來糾正它爲while((line = in.readLine()) != "null"),它應該能夠顯示文件(新文件)中的內容,但它仍然繼續顯示相同的錯誤輸出。

import java.io.*; 

    public class ReaderTest { 

     public static void main(String[] args) throws IOException{ 

        BufferedReader in = new BufferedReader(new FileReader("/home/a1340/new file")); 

        String line=""; 
        while((line = in.readLine()) != "\n"){ 
        System.out.println(line); 
        } 
        in.close(); 

        } 
       } 

     import java.io.*; 

     public class ReaderTest { 

      public static void main(String[] args) throws IOException{ 

         BufferedReader in = new BufferedReader(new FileReader("/home/a1340/new file")); 

         String line=""; 
         while((line = in.readLine()) != "null"){ 
         System.out.println(line); 
         } 
         in.close(); 

         } 
        } 
+1

刪除'null'周圍的雙引號 – 2012-04-02 11:20:39

+0

噢..沒有引號..問題仍然存在。我認爲緩衝區需要被刷新。 ??但是我很困惑如何? – maryJane 2012-04-02 11:25:21

+0

不需要衝洗配偶。我經常用這個。可能是,問題在於'FileReader',而不是'FileInputStream'。下面是我的回答,試試吧 – 2012-04-02 11:31:10

回答

5

readLine() returns null當到達流的末尾,所以你需要比較null,不"null"

while((line = in.readLine()) != null) 
+0

sry ..我的意思是null不是「null」.. @Binyamin Sharet – maryJane 2012-04-02 11:24:10

+0

嘗試清理並重建你的項目。 – MByD 2012-04-02 11:25:27

0

使用空不帶引號

while((line = in.readLine()) != null){ 
System.out.println(line); 
} 
0

null不是String輸入java

您需要使用null,因爲它是

while((line = in.readLine()) != null) 
{ 
    System.out.println(line); 
} 

使用FileInputStream

BufferedReader in = new BufferedReader(new FileInputStream(new File("filename"))); 

while((line = in.readLine()) != null) 
{ 
    System.out.println(line); 
} 
0

首先,正如其他人所說,你需要比較null

但是,您也應該使用.equals(...)來比較String對象,而不是不等式運算符!=

I.e.寫這篇

if ("\n".equals(line)) { ... } 

不是這個:

if ("\n" == line) { ... } 

此外,Java平臺知悉底層的操作系統通過System.getProperty("line.separator");

一些平臺使用\r\n

最後自然行終止序列,我建議"literal".equals(variable)而不是variable.equals("literal"),因爲如果variablenull