gpt4 book ai didi

java - Android - 复制文件后关闭电源导致文件损坏

转载 作者:行者123 更新时间:2023-11-30 10:54:03 24 4
gpt4 key购买 nike

我正在使用这个代码

for (Uri fileUri : files) {
File destFile = ...
InputStream is = getContentResolver().openInputStream(fileUri);

FileUtils.copyInputStreamToFile(is, destFile);
}

如果用户在这个 for 周期后取出手机电池,那么一些文件(持续)会损坏。

是否可以避免这种情况?

我尝试将 InputStream 复制到临时目录,然后使用

 FileUtils.moveFile(temp, destFile);

每个文件都有同样的问题。

我能以某种方式关闭复制的文件吗?确保复制成功?

最佳答案

我用这个解决了这个问题:

FileOutputStream out = new FileOutputStream(filename);

[...]

out.flush();
out.getFD().sync();

来自 I/O concept flush vs sync

查看https://android.googlesource.com/platform/frameworks/base/+/cd92588/core/java/android/os/FileUtils.java和方法 copyToFile(InputStream inputStream, File destFile) 这是一个很好的例子如何解决这个问题。

感谢 qbix!

关于java - Android - 复制文件后关闭电源导致文件损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33793796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com