Я использую этот кодAndroid - Отключение питания после копирования файлов приводит к повреждению файлов
for (Uri fileUri : files) {
File destFile = ...
InputStream is = getContentResolver().openInputStream(fileUri);
FileUtils.copyInputStreamToFile(is, destFile);
}
И если пользователь удалить батарею из телефона после этого for
цикла, то некоторые файлы (продолжается) искажены ,
Можно ли предотвратить это?
Я попытался скопировать InputStream в временный каталог, а затем использовать
FileUtils.moveFile(temp, destFile);
для каждого файла, но там была та же самая проблема.
Можно ли как-то закрыть скопированные файлы? Убедитесь, что они успешно скопированы?
Является ли 'FileUtils' классом, который вы написали? В методе 'copyInputStreamToFile()' используются 'flush' и' sync'? В качестве примера см. Метод 'copyToFile()' в строке 190 [этого файла] (https://android.googlesource.com/platform/frameworks/base/+/cd92588/core/java/android/os/FileUtils. Ява). –
Нет. FileUtils - это Apo Commons IO. Спасибо за вашу информацию. Я попробую использовать copyToFile(), который вы предложили. –
Дополнительная информация находится здесь: http://stackoverflow.com/questions/4072878/i-o-concept-flush-vs-sync –