Java Android-在文本文件中追加特定行

Java Android-在文本文件中追加特定行,java,android,Java,Android,大家好, 我有一个文本文件,我需要附加到我的应用程序中。现在我可以重写整个文件,将更改合并到特定行,但我希望有一个更有效的解决方案。 我知道我需要附加的行号,但我不确定如何到达该行,最好不要循环通过所有其他行,除非这是唯一的方法。这就是我到目前为止重新创建整个文件的内容:` try { FileOutputStream fOut = openFileOutput("tasklist.txt", MODE_APPEND); Buffe

大家好, 我有一个文本文件,我需要附加到我的应用程序中。现在我可以重写整个文件,将更改合并到特定行,但我希望有一个更有效的解决方案。 我知道我需要附加的行号,但我不确定如何到达该行,最好不要循环通过所有其他行,除非这是唯一的方法。这就是我到目前为止重新创建整个文件的内容:`

        try {
            FileOutputStream fOut = openFileOutput("tasklist.txt", MODE_APPEND);
            BufferedOutputStream buf = new BufferedOutputStream(fOut);

            OutputStreamWriter osw = new OutputStreamWriter(buf);
            BufferedWriter writer = new BufferedWriter(osw);

            for(int count = 0; count < str.size(); count++)
            {
                writer.write(str[count]);
                writer.write("\r\n");
            }

            writer.flush();
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(this, "Error saving txt file", Toast.LENGTH_SHORT);
        }`
试试看{
FileOutputStream fOut=openFileOutput(“tasklist.txt”,模式\追加);
BufferedOutputStream buf=新的BufferedOutputStream(fOut);
OutputStreamWriter osw=新的OutputStreamWriter(buf);
BufferedWriter=新的BufferedWriter(osw);
对于(int count=0;count

希望有人知道一个更有效的解决方案。谢谢。

有一些更干净的方法,但对于文件处理,没有一种更有效的方法(据我所知)。基本上,您可以从头到尾地添加数据。这就是文件I/O的工作原理(它不是Android或Java的东西)

不过,您可以尝试FileWriter将其整理一下(ctor的“true”参数表示追加):

不过请注意,FileWriter使用系统默认编码。这在Android上应该可以,但总体上要小心

这里有一些好将军

此外,根据您对附加到的文件所做的操作(您编辑同一文件的频率,以及通过哪些流程),您可能需要制作该文件的副本,或者,为了确保在使用日志文件系统的Android设备上不会丢失数据

不过,为了让你的应用程序更高效,也许你可以将数据缓存在内存中,只在特定的时间间隔或完成后写出整个文件(而不是追加)。如果您有大量数据,DB甚至可能是合适的

FileWriter writer = new FileWriter(aFile, true));
try {
    writer.write("append here\n");
} finally {
   writer.close();
}