写入文本文件而不覆盖以前的条目

时间:2016-01-20 00:56:52

标签: java file text writing

我用这个来写一个文本文件。程序打开时工作正常,但当我关闭并重新打开并再次开始保存时,它会完全覆盖以前的数字。

private void writeNumbers(ArrayList<String> nums)
{
    try 
    {
        PrintStream oFile = new PrintStream("lottoNumbers.txt");
        oFile.print(nums);
        oFile.close();
    }
    catch(IOException ioe)
    {
        System.out.println("I/O Error" + ioe);
    }
}

3 个答案:

答案 0 :(得分:0)

您是否在启动程序时阅读此文本文件?如果您要写入的文件已存在,则始终会覆盖它。如果要将其添加到文件中,则需要在启动程序时读取它,将该数据保存到某处,然后将OLD数据+新数据写入文件。

虽然可能有一种更简单的方法,但这就是我过去的做法。

答案 1 :(得分:0)

写一个if语句来检查文件是否存在,如果它存在,你可以使用&#34; file.append&#34;否则会创建一个新的。

public class WriteToFileExample {
    public static void main(String[] args) {
        try {

            String content = "This is the content to write into file";

            File file = new File("/users/mkyong/filename.txt");

            // if file doesnt exists, then create it
            if (!file.exists()) {
                file.createNewFile();
            }

            FileWriter fw = new FileWriter(file.getAbsoluteFile());
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(content);
            bw.close();

            System.out.println("Done");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

答案 2 :(得分:0)

你可以尝试这种追加模式

try {
    Files.write(Paths.get("myfile.txt"), "the text".getBytes(), StandardOpenOption.APPEND);
}catch (IOException e) {
    //exception handling left as an exercise for the reader
}

FileUtils.writeStringToFile(file, "String to append", true);