使用Bufferedwrite和bufferedread在Java中将文字写入file.txt

时间:2014-11-11 09:26:34

标签: java bufferedwriter

我的代码有问题。我想创建一个简单的字典,数据库存储在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文件的新单词

2 个答案:

答案 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();