2014-04-23 122 views
0
public void file(){ 
     String fileName = "hello.txt"; 
     fileName = FileBrowser.chooseFile(true); 


     //Open a file and store the information into the OurList 
     try 
     { 
      String s = ""; 
      File file = new File(fileName); 
      FileReader inputFile = new FileReader(file); 
      while(inputFile.read() != -1) 
      { 
       System.out.println(inputFile.read()); 
       System.out.println(); 
      } 
     } 
     catch(Exception exception) 
     { 
      System.out.println("Not a real file. List is already built"); 
     } 

    } 

所以我有這段代碼的麻煩。我想從文件中逐字逐字地閱讀,但現在它正在跳過其他文件。我知道它爲什麼會跳過,它在while循環中以及何時嘗試打印,但據我所知,沒有其他方法可以停止FileReader,然後將其設置爲!= -1。我怎樣才能讓它不跳過?跳過我的文件讀取器

回答

1

你在循環中調用read()兩次,所以你沒有看到每個奇怪的字符。您需要將read()的結果存儲在一個變量中,對它進行測試,如果是,則中斷,否則打印該變量。

+0

感謝。我知道這是跳過,因爲我有兩個電話,但無法弄清楚如何將它存儲到一個變量之前。生病的時候改變它做。再次感謝。 – user2743857

+0

@ user2743857:請將EJP的答案標記爲已接受。 –

0

使用此模式:

 int value = inputFile.read(); 
     while(value != -1) 
     { 
      System.out.println(value); 
      System.out.println(); 
      value = inputFile.Read(); 
     } 
1
int nextChar; 
while((nextChar = inputFile.read()) != -1) 
    { 
     System.out.println(nextChar); 
     System.out.println(); 
    } 
0

正如你已經知道,你是調用read(),每個循環兩次,這導致的問題。

下面是一些常見的方法正確環路和閱讀:

一個鬆散,但是工作的方式,我相信大多數人可以自己弄清楚的是:

boolean continueToRead = true; 
while(continueToRead) { 
    int nextChar = file.read(); 
    if (nextChar != -1) { 
     .... 
    } else { // nextChar == -1 
     continueToRead = false; 
    } 
} 

或使用破:

while(true) { 
    int nextChar = file.read(); 
    if (nextChar == -1) { 
     break; 
    } 

    .... 
} 

的清潔器模式:

int nextChar = file.read(); 
while (nextChar != -1) { 
    .... 
    nextChar = file.read(); 
} 

while ((nextChar = file.read()) != -1) { 
    .... 
} 

我更成使用循環:

for (int nextChar = file.read(); nextChar != 1; nextChar = file.read()) { 
    .... 
} 
相關問題