【发布时间】:2014-05-19 07:48:36
【问题描述】:
我有一个小程序,它从 .txt 文件中读取一个数字,将其递增,并在每次运行时将其打印回文件:
public class ClientCounter {
int count = 0;
String input = "";
public int addClient() {
try (
PrintWriter out = new PrintWriter(new FileWriter("test.txt"));
BufferedReader in = new BufferedReader(new FileReader("test.txt"));
) {
input = in.readLine();
System.out.println("Input line is " + input);
if (input != null)
count = Integer.parseInt(input);
System.out.println("Client count is: " + count);
count++;
System.out.println("After increment, count is: " + count);
String output = Integer.toString(count);
System.out.println("Output is " + output);
out.println(output);
} catch(FileNotFoundException e) {
System.out.println("FNFE!");
System.exit(1);
} catch(IOException e) {
System.out.println("IOE!");
System.exit(1);
}
return count;
}
但是,每次我尝试运行它时,都会得到以下输出:
Input line is null
Client count is: 0
After increment, count is: 1
Output is 1
我的test.txt 文件始终只包含一个数字1。
知道为什么会这样吗?
【问题讨论】:
-
我认为是因为您阅读了正在编写的文件。
PrintWriter out = new PrintWriter(new FileWriter("test.txt"));新建一个空文件。 -
文件可能没有准备好。当你试图阅读它时。试图关闭作家
-
尝试使用
RandomAccessFile,并以读/写模式打开它? -
我在你的程序中看到的错误是你不能同时打开同一个文件进行读写,这是串行操作,你必须关闭一个来做另一个。
标签: java bufferedreader bufferedwriter