Код: Выделить всё
file.copyRecursively(File(target, file.name), overwrite = true)
file.deleteRecursively()
< /code>
Интересная причуда устройства, на которое я нацелен, заключается в том, что оно не показывает стандартное уведомление о подключении диска, в которой есть кнопка «Выбросить». Я показываю состояние прогресса в пользовательском интерфейсе, когда файлы перемещаются (с приведенным выше кодом), чтобы сигнализировать о том, что диск не должен быть выведен, но если я быстро изгнал после того, как я часто заканчиваю файлами 0b на USB -дисков (поскольку файлы перемещаются с локального диска на диск). Мне удалось исправить это (насколько я могу судить), написав модифицированную версию Copyrecurbirty
Код: Выделить всё
this.inputStream().use { input ->
target.outputStream().use { output ->
input.copyTo(output, bufferSize)
output.flush()
output.fd.sync()
}
}
< /code>
Теперь состояние прогресса пользовательского интерфейса показывается достаточно долго, что, если USB -диск вытащится сразу после того, как приложение останавливается, показывают его, файлы не повреждены на диске. Я предполагаю, что это будет иметь значение в том, как удаления «совершены» в Exfat (в отличие от FAT32). Я попробовал хитрость FSYNC
Код: Выделить всё
ACTION_MEMORY_CARD_SETTINGS
Есть ли способ использования Java/Kotlin, который я не хватает, чтобы убедиться, что диск обновлен, чтобы я мог отобразить пользовательский интерфейс Progress для соответствующего времени или заставить файловую систему диска обновлять? Потребует ли это погружение в родной код? Это то, что может справиться только с процессом «выброса» ОС (который недоступен для приложений на Android)?>
Подробнее здесь: https://stackoverflow.com/questions/796 ... -usb-drive