Android: Переместить большое количество файлов на SD-карту транзакционно?

Допустим, у меня есть база данных с несколькими сотнями BLOB-объектов, которые хранятся в отдельных файлах, которые я хочу переместить на SD-карту. Каков наилучший способ сделать это программно, гарантируя, что ничего не останется?

Я понимаю, что могу копировать файлы только через разные крепления.

Так можно ли скопировать все файлы в подкаталог в "кеше", а затем атомарно переместить подкаталог в нужное место? Или я могу записать все файлы в каталог с префиксом "temp" и переименовать его на месте при проверке?

2 ответа

Решение

Возможность переместить папку (я имею в виду, переместить ее просто переименовав) зависит от файловой системы и, вероятно, на нее лучше не полагаться. Кроме того, даже когда она работает, она работает только внутри границ на одном монтировании. Я бы предложил просто переименовать папку после того, как все файлы были успешно скопированы.

Если папка с "временным" префиксом будет обнаружена из-за предыдущего сбоя, ее можно просто удалить ("откат").

Я бы порекомендовал найти библиотеку с алгоритмом, который предназначен для таких проблем, как эта. Возможно, вы захотите начать с рассмотрения этого вопроса. Есть ли хорошая библиотека rsync для Java?

Другие вопросы по тегам