Как обеспечить обновление файловой системы при изменении файлов на USB -дисковJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как обеспечить обновление файловой системы при изменении файлов на USB -дисков

Сообщение Anonymous »

Я работал над приложением Android, которое перемещает и выключает подключенный USB -диск. Для перемещения основной код, который я использую: < /p>

Код: Выделить всё

file.copyRecursively(File(target, file.name), overwrite = true)
file.deleteRecursively()
< /code>
Интересная причуда устройства, на которое я нацелен, заключается в том, что оно не показывает стандартное уведомление о подключении диска, в которой есть кнопка «Выбросить». Я показываю состояние прогресса в пользовательском интерфейсе, когда файлы перемещаются (с приведенным выше кодом), чтобы сигнализировать о том, что диск не должен быть выведен, но если я быстро изгнал после того, как я часто заканчиваю файлами 0b на USB -дисков (поскольку файлы перемещаются с локального диска на диск). Мне удалось исправить это (насколько я могу судить), написав модифицированную версию Copyrecurbirty 
, которая использует fsync после копирования (после охоты и поиска этого поста):

Код: Выделить всё

this.inputStream().use { input ->
target.outputStream().use { output ->
input.copyTo(output, bufferSize)
output.flush()
output.fd.sync()
}
}
< /code>
Теперь состояние прогресса пользовательского интерфейса показывается достаточно долго, что, если USB -диск вытащится сразу после того, как приложение останавливается, показывают его, файлы не повреждены на диске. Я предполагаю, что это будет иметь значение в том, как удаления «совершены» в Exfat (в отличие от FAT32). Чтобы решить это, я попробовал:
[list]
[*] to fsync 
Удаленный файл (через FileScriptor ) после удаления
[*] Переключение на использование файлов java.move
[*] Использование FileChanle#FileChanle#FileChanled#FileChanle#FILEGANED#FILEGANED #ETEREDETEDEMED

Подробнее здесь: https://stackoverflow.com/questions/796 ... -usb-drive
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»