如何在启动时将数据写入文件

我正在使用下面的代码在文件中写入数据。


public static void writeDataToFile(final String fileName, final String fileContents) {

    try {

        File file = new File(Environment.getExternalStorageDirectory() + fileName);


        if (!file.exists()) {

            file.createNewFile();

        }

        FileWriter writer = new FileWriter(file, true);

        writer.append(fileContents);

        writer.flush();

        writer.close();

    } catch (IOException e) {

        LogUtility.logInfo(TAG, e.getMessage());

    }

}

这里的FileWriter构造函数采用布尔值,这意味着它每次都将数据连接到文件到最后一个数据。我想要得到的是有一个文件,其中包含我正在执行的活动的日志。我是通过上述代码实现的。但问题是它总是每次都将日志连接到最后一个数据。我想要的是每次都在开始时写新日志。这样我就不会在底部搜索文件以获取最后一个日志。它将在每个时间开始。任何帮助


慕尼黑5688855
浏览 128回答 3
3回答

白猪掌柜的

如果文件不存在,则说明您已编写代码来创建新文件。同样,如果文件存在,您可以删除该文件,并创建一个新文件在删除旧文件之前,可以将内容复制到一个String中,在写入文件之前将其添加到要写入文件的内容中。StringBuilder contentToWrite = new StringBuilder();contentToWrite.append(newContent);if (!file.exists()) {    file.createNewFile();} else {    FileReader fileReader = new FileReader(file);    BufferedReader bufferedReader = new BufferedReader(fileReader);    String line = bufferedReader.readLine();    StringBuilder sb = new StringBuilder();    while (line != null) {        sb.append(line).append("\n");        line = bufferedReader.readLine();    }    contentToWrite.append("\n\n" + sb);    file.delete();    file.createNewFile();}FileWriter writer = new FileWriter(file, true);writer.append(contentToWrite);writer.flush();writer.close();PS:不要忘记在 finally 语句中关闭 FileReader 和 BufferedReader。

守着一只汪

如果文件存在,为什么不删除它:    if (!file.exists()) {        file.createNewFile();    } else {        file.delete()        file.createNewFile();    }

梦里花落0921

您可以在FileWriter构造函数中将追加标志设置为 false。然后,使用write()函数而不是append()函数FileWriter writer = new FileWriter(file, false); writer.write(fileContents);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java