Помимо попытки выполнения операции и перехвата исключения, существует ли способ определить, можно ли переместить или скопировать файл?
Определите, можно ли переместить или скопировать файл
Ответы (3)
Невозможно узнать, будет ли перемещение или копирование файла гарантировано успешным или нет.
Но вы можете проверить довольно много вещей, чтобы убедиться, что это не сработает:
- Проверьте место на диске в месте назначения (вам нужен как минимум размер вашего файла)
- Проверьте файл, который уже существует в месте назначения
- Откройте файл, запросив доступ для чтения к исходному файлу, чтобы убедиться, что 1) у вас есть разрешения на него, 2) он не используется.
- Вы можете прочитать весь исходный файл, чтобы убедиться, что внутри файла нет блокировок.
- Уловка, используемая проводником Windows при копировании файлов (или перемещении между томами), заключается в том, чтобы сначала создать пустой файл, а затем расширить его до полного размера. Только после того, как файл будет полностью выделен, в файл начнутся записи.
- Выделение файлу размера данных, которые вы хотите скопировать, также сообщит вам, есть ли на месте цитата файловой системы, которая была достигнута.
- Если файл уже используется, и вы хотите зайти так далеко, вы можете использовать теневое копирование тома (VSS).
Подробнее о блокировке файлов:
См. Мой ответ здесь для получения дополнительной информации о блокировка файлов и разрешения в Linux.
См. Мой ответ здесь для получения дополнительной информации о блокировка файлов и разрешения в Windows.
В общем, проверьте, существует ли файл, и что текущий пользователь имеет разрешение на чтение файла (или удаление файла для перемещения) и соответствующее разрешение для целевого каталога. Кроме того, для копирования вы должны проверить наличие свободного места на диске. Конечно, перед всем этим убедитесь, что исходный файл и целевой каталог вообще существуют.
Конечно, это не гарантирует, что операция будет успешной. Многое может случиться. Даже разрешения для файла могут измениться между временем проверки и временем выполнения операции.
Если файл можно прочитать, его можно переместить или скопировать. Вы спрашиваете, как можно проверить, удастся ли переместить или скопировать?