【发布时间】:2020-12-18 21:44:59
【问题描述】:
我有一个代码:
File readFile = new File("acc\\10001.txt");
protected void readData(File file){
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
while(reader.read() != -1){
System.out.println(reader.readLine());
}
} catch (FileNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
方法在 Main 类的构造函数中。启动项目时,控制台显示(例如):“est”而不是“Test”,“0001”而不是“10001”。
它适用于所有字符串和整数。
感谢每一个帮助。
【问题讨论】:
-
不,
(reader.read() != -1)“吃掉”一个字符。摆脱它并使用readLine()直到它返回 null。 -
当我使用
while(reader.readLine() == null)时,控制台不返回任何字符/数字,当我使用while(reader.readLine() != null)时,控制台仅返回文件中包含的 10 行中的 5 行 -
将
readLine()的结果存储在变量中,并在循环条件和循环体中使用该变量。你可以写成String line = null; while ( (line = reader.readLine()) != null){ .. handle current line..}。 -
或者使用像
Scanner这样的类,它在内部缓存通过has..XYZ..()读取的值,以后可以通过nextLine()等方法检索。这样你的代码可以看起来像Scanner scanner = new Scanner(new File(pathToFile)); while(scanner.hasNextLine()){ String line = scanner.nextLine(); ..handle current line.. }。 -
@Pshemo 感谢兄弟的解决 :)
标签: java io bufferedreader filereader java-io