Android: Переместить большое количество файлов на SD-карту транзакционно?
Допустим, у меня есть база данных с несколькими сотнями BLOB-объектов, которые хранятся в отдельных файлах, которые я хочу переместить на SD-карту. Каков наилучший способ сделать это программно, гарантируя, что ничего не останется?
Я понимаю, что могу копировать файлы только через разные крепления.
Так можно ли скопировать все файлы в подкаталог в "кеше", а затем атомарно переместить подкаталог в нужное место? Или я могу записать все файлы в каталог с префиксом "temp" и переименовать его на месте при проверке?
2 ответа
Возможность переместить папку (я имею в виду, переместить ее просто переименовав) зависит от файловой системы и, вероятно, на нее лучше не полагаться. Кроме того, даже когда она работает, она работает только внутри границ на одном монтировании. Я бы предложил просто переименовать папку после того, как все файлы были успешно скопированы.
Если папка с "временным" префиксом будет обнаружена из-за предыдущего сбоя, ее можно просто удалить ("откат").
Я бы порекомендовал найти библиотеку с алгоритмом, который предназначен для таких проблем, как эта. Возможно, вы захотите начать с рассмотрения этого вопроса. Есть ли хорошая библиотека rsync для Java?