我嘗試通過字符讀取文件字符。不幸的是,在從文件中讀取字符時,Java忽略EOF。Java在讀取文件中的字符時忽略EOF
FileReader fileReader = new FileReader(fileText);
char c;
String word = "";
List<String> words = new ArrayList<String>();
while ((c = (char) fileReader.read()) != -1) {
System.out.println(c);
if (c != ' ') {
word = word + c;
}
else {
words.add(word + " ");
word = "";
}
}
應該分手的讀取完畢後,而是它永遠不會停止運行....
的BufferedReader從磁盤讀取的次數更少,從而加快了一點。即使你一個接一個地循環字符。 – ignis
檢查'=='\ uFFFF'' – irreputable
@irreputable這是正確的答案。您應該將其作爲答案發布。 [原始縮小轉換](http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.1.3):'int'到'char'轉換完全丟棄16個低位。 Java以2的補碼錶示數字。並且-1的2的補碼是11111 ...當你比較c == -1時,你正在擴展char到int的轉換,然後你比較整數;即「零擴展char值的表示以填充更寬的格式」,即將先前丟失的1替換爲0。因此你得到錯誤。 – ignis