Возможно, вам следует разработать безопасный порядок операций. Например (просто выдумываю, не подтвержден его полностью):
- Записи в постоянном файл рабочего списка (/ общее предпочтение и т.д.), что вы собираетесь делать
- Скопируйте файл
- Проверьте копирование завершено
- только затем удалить оригинальную
- Cleanup запись в рабочем списке
Вы не должны делать работу в потоке пользовательского интерфейса. Вы можете захотеть сделать это в службе, чтобы обрабатывать случай с огромными файлами (или большим количеством файлов), которые могут занять некоторое время.
Возможно, вам также необходимо рассмотреть возможность использования метода File.renameTo() в том случае, если источник и получатель находятся на одном и том же разделе (то есть на внешнем хранилище). Также вы должны убедиться, что каталог назначения существует.
Также подумайте над тем, что вы собираетесь делать, если выбранный объект является каталогом, а не файлом ...