我的代码有问题。我想创建一个简单的字典,数据库存储在txt文件中。 我想使用BufferedWriter为txt文件添加新单词,但它不再起作用了。 甚至它在我运行程序时删除txt文件中的所有数据 这是oode:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class AddWords {
public void addToDictionary(String _add) {
String line = null;
BufferedReader br = null;
BufferedWriter wr = null;
int count = 0;
try {
String path = "E:\\Lecture\\Semester 3\\IF321314 OOP\\Week 10\\Pratikum\\Sesi 01\\Kamus\\dictionary.txt";
br = new BufferedReader(new FileReader(path));
while ((line = br.readLine()) != null) {
}
wr = new BufferedWriter(new FileWriter(path));
wr.newLine();
wr.write(_add);
br.close();
System.out.println("Words successfully added!");
} catch (IOException ex) {
}
}
}
参数“_add”是另一个来自用户输入的文件中的make,这是我要添加到txt文件的新单词
答案 0 :(得分:0)
我认为你的问题是你认为Reader和Writer以某种方式分享文件在他们工作的位置,但那不是真的。您不需要该阅读器,您可以使用Writer.append
代替Writer.write
在文件末尾添加新文本,而不会覆盖以前的数据。
一个偏离主题的建议:我从不使用FileWriter,因为无法定义charset,它总是使用OS默认值。我认为使用包装在OutputStreamWriter中的FileOutputStream会更好,它可以定义自定义字符集。
答案 1 :(得分:0)
你可以写而不是
wr = new BufferedWriter(new FileWriter(path));
像这样
wr = new BufferedWriter(new FileWriter(path,true));
这是附加文件的小例子。
//true = append file
FileWriter fileWritter = new FileWriter(path,true);
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
bufferWritter.write(data);
bufferWritter.close();