Я разрабатываю приложение, которое должно перезагрузить систему после того, как файл был загружен и проверен.Файловая система находится на SD-карте, поэтому ее необходимо синхронизировать, чтобы убедиться, что загруженный файл действительно был сохранен на устройстве.
Мне было интересно, выполняет ли синхронизация файл java.io.file.Files.copy.или нет.
Мой код работает так:
public int save(MultipartFile multipart) throws IOException {
Files.copy(multipart.getInputStream(), file, standardCopyOption.REPLACE_EXISTING);
if (validate(file)) {
sync(file); <-- is it useless?
reboot();
return 0;
} else {
Files.delete(file);
return -1;
}
}
Я пытался найти способ вызвать синхронизацию на fs в пакете nio, но единственное решение, которое я нашелis:
public void sync(Path file) {
final FileOutputStream fos = new FileOutputStream(file.toFile());
final FileDescriptor fd = fos.getFD();
fd.sync();
}
, который опирается на старый файл java.io.File.