Java 第一次运行后不会出现';t加入“;“什么?”;到EOF。。。怎么会?
第二次应该将单词“something”添加到文件中并打印“atext has added”,但它将其视为空文件 任何事Java 第一次运行后不会出现';t加入“;“什么?”;到EOF。。。怎么会?,java,Java,第二次应该将单词“something”添加到文件中并打印“atext has added”,但它将其视为空文件 任何事 公共类读取文件{ 公共读取文件(){ } 公共布尔读取文件(){ 布尔成功=假; 字符串文件_name=“source/text.txt”; 试一试{ FileReader文件=新的FileReader(文件名); BufferedReader read=新的BufferedReader(文件); BufferedWriter bf=新的BufferedWriter(新的Fil
公共类读取文件{
公共读取文件(){
}
公共布尔读取文件(){
布尔成功=假;
字符串文件_name=“source/text.txt”;
试一试{
FileReader文件=新的FileReader(文件名);
BufferedReader read=新的BufferedReader(文件);
BufferedWriter bf=新的BufferedWriter(新的FileWriter(文件名));
if(read.readLine()!=null){
附加(“某物”);
System.out.println(“已添加文本!!”;
}否则{
追加(文件名);
System.out.println(“文件更新”);
}
read.close();
bf.close();
成功=真实;
}捕获(IOE异常){
e、 getMessage();
}
回归成功;
}
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
ReadFile rf=新的ReadFile();
rf.readFile();
}
}
当文件不为空时,应将“某物”添加到EOF您需要以追加模式打开文件,否则当FileWriter打开文件时,它将被清空:
BufferedWriter bf = new
BufferedWriter(new FileWriter (file_name, true));
显然,您正在向试图读取的同一文件写入数据。在没有附加选项的情况下写入文件会将文件内容截断为零长度。
尝试写入其他文件。此处需要进行一些更改
- 您需要以追加模式打开文件进行写入
- 在将数据附加到文件后,需要调用flush()才能读取该文件
- 你需要一个循环,至少如果你希望所有事情都在同一次运行中发生的话
在第一次运行后,您是否打开并查看了文件,以查看“某物”是否已写入其中?实际上,我有点惊讶您可以同时打开文件进行读写。“尝试写入其他文件”为什么?在这种情况下,写入同一个文件似乎是一项要求。对我来说,同时读取和写入同一个文件似乎不是一个好主意。我永远不会在我的代码中这样做。在java和操作系统内部,读/写可能会根据操作顺序和缓冲区状态而变得随机。如果我想从同一个文件读写,我宁愿使用RandomAccessFile,并明确我想做什么这是一个改进,但输入时间更短,信息量更大的是
e.printStackTrace()
,它将自动打印到系统。err
流。噢,还有OP。如果它有助于解决问题,请联系我们。
try {
FileReader file = new FileReader(file_name);
BufferedReader read = new BufferedReader(file);
BufferedWriter bf = new BufferedWriter(new FileWriter (file_name, true));
while(true) {
if(read.readLine() != null) {
bf.append("something");
System.out.println("a text has been added!!");
break;
} else {
bf.append(file_name);
bf.flush();
System.out.println("File updated");
}
}
read.close();
bf.close();
success = true;
} catch(IOException e) {
System.out.println(e.getMessage());
}