我编写了一个 Android 应用程序,可以将(可能)大文件保存到 SD 卡。有时,我在写入操作期间会收到 IOException,这会导致文件处于损坏状态。基于对这个问题的回答:
Question: How to safely write to a file?
我应该使用的策略是创建一个临时文件,然后在写入完成后复制该文件。我的问题是:
1) 这是 Android 上最安全的方法吗? (例如,你可以复制 android sd 卡上的文件吗?如果可以的话,操作是原子的吗?)
2) 在资源(磁盘空间)有限的嵌入式系统中,有人知道另一种安全写入磁盘的策略吗? (而不是创建两个大文件)
谢谢
最佳答案
我知道回答这个问题为时已晚,但会帮助遇到此问题的任何人,他们会发现它很有帮助。
您需要使用 AtomicFile .
以下代码 fragment 可能会有所帮助。
public void writeFile(File file, byte[] data) {
AtomicFile aFile = new AtomicFile(file);
FileOutputStream fos = null;
try {
fos = aFile.startWrite();
fos.write(data);
// Close stream and commit new data.
aFile.finishWrite(fos);
fos = null;
} catch (IOException e) {
Log.e(TAG, "Cannot write file " + file.getPath(), e);
} finally {
if (fos != null) {
// Something went wrong.
// Close stream and roll back data.
aFile.failWrite(fos);
}
}
}
关于java - 如何在android中安全地将文件保存到磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7940582/