java - 第一次运行后没有向 EOF 添加“东西”......怎么会?
问题描述
第二次应该将“某物”一词添加到文件中并打印“atext has been added”,但它会将其视为一个空文件......
任何事物..
public class ReadFile {
public ReadFile() {
}
public boolean readFile() {
boolean success = false;
String file_name = "source/text.txt";
try {
FileReader file = new FileReader(file_name);
BufferedReader read = new BufferedReader(file);
BufferedWriter bf = new BufferedWriter(new FileWriter (file_name));
if (read.readLine() != null) {
bf.append("something");
System.out.println("a text has been added!!");
} else {
bf.append(file_name);
System.out.println("File updated");
}
read.close();
bf.close();
success = true;
} catch(IOException e) {
e.getMessage();
}
return success;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ReadFile rf = new ReadFile();
rf.readFile();
}
}
当文件不为空时,应将“某物”添加到 EOF
解决方案
这里需要做一些改变
- 您需要以附加模式打开文件进行写入
- 您需要在将数据附加到文件后调用 flush() 才能读取它
- 您需要一个循环,至少如果您希望所有事情都在同一次运行中发生
请注意,我在这里使用了无限循环,这很危险,因此还有改进的余地。捕获异常时我还添加了一个 println
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());
}
推荐阅读
- node.js - TsLint 抱怨调用顶级异步方法
- python - Pandas:将带有 DatetimeIndex 的列表的字典转换为 DataFrame
- java - 包含文件名空间的 Java 进程命令
- java - (三重DES) DESede/CBC/PKCS5Padding Qt Creator中的加解密
- dapper - Dapper 从查询中返回特定字段
- android - 如何在 Firebase UI 中使用带有 FirestorePagingAdapter 的分页按钮?
- r - 读取 Excel 文件并选择特定的行和列
- c# - 从两个表中检索数据并填充 DataGrid 实体框架
- java - 加载 csv 文件时过滤特定行
- java - 如何使用 fxml 文档中资源包中的字符串填充 javafx ChoiceBox