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

时间:2011-02-08 19:24:29

标签: java android

嘿,人们, 我有一个文本文件,我需要在我的应用程序中添加。现在我可以重写包含特定行更改的整个文件,但我希望有一个更有效的解决方案。 我知道我需要追加的行号但是我不确定如何到达那一行,最好不要遍历所有其他行,除非这是唯一的方法。这是我到目前为止重新创建整个文件:`

        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);
        }`

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

1 个答案:

答案 0 :(得分:3)

有一些更简洁的方法,但有文件处理,实际上没有一种更有效的方式(我知道)。你基本上从头到尾都是如你所做的那样,并追加数据。这就是文件I / O的工作原理(它不是Android或Java的东西)。

不过,您可以尝试使用FileWriter将其整理一下(ctor的“真实”参数意味着追加):

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

请注意,FileWriter使用系统默认编码。这在Android上应该没问题,但一般要小心。

以下是一些好的将军practices for dealing with reading and writing files with Java

此外,根据您正在使用此文件执行的操作(您编辑同一文件的频率以及从哪些进程编辑),您可能需要复制它,或者{{{ 3}},以确保您不会丢失使用日记文件系统的Android设备上的数据。

为了提高您的应用效率,也许您可​​以将数据缓存在内存中,并且只能以特定的时间间隔或完成后写出整个文件(而不是追加)。如果您有大量数据,则数据库甚至可能是合适的。