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);
}`
希望有人知道更有效的解决方案。感谢。
答案 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设备上的数据。
为了提高您的应用效率,也许您可以将数据缓存在内存中,并且只能以特定的时间间隔或完成后写出整个文件(而不是追加)。如果您有大量数据,则数据库甚至可能是合适的。