Определите, можно ли переместить или скопировать файл

Помимо попытки выполнения операции и перехвата исключения, существует ли способ определить, можно ли переместить или скопировать файл?


person user79755    schedule 20.03.2009    source источник


Ответы (3)


Невозможно узнать, будет ли перемещение или копирование файла гарантировано успешным или нет.

Но вы можете проверить довольно много вещей, чтобы убедиться, что это не сработает:

  • Проверьте место на диске в месте назначения (вам нужен как минимум размер вашего файла)
  • Проверьте файл, который уже существует в месте назначения
  • Откройте файл, запросив доступ для чтения к исходному файлу, чтобы убедиться, что 1) у вас есть разрешения на него, 2) он не используется.
  • Вы можете прочитать весь исходный файл, чтобы убедиться, что внутри файла нет блокировок.
  • Уловка, используемая проводником Windows при копировании файлов (или перемещении между томами), заключается в том, чтобы сначала создать пустой файл, а затем расширить его до полного размера. Только после того, как файл будет полностью выделен, в файл начнутся записи.
  • Выделение файлу размера данных, которые вы хотите скопировать, также сообщит вам, есть ли на месте цитата файловой системы, которая была достигнута.
  • Если файл уже используется, и вы хотите зайти так далеко, вы можете использовать теневое копирование тома (VSS).

Подробнее о блокировке файлов:

См. Мой ответ здесь для получения дополнительной информации о блокировка файлов и разрешения в Linux.

См. Мой ответ здесь для получения дополнительной информации о блокировка файлов и разрешения в Windows.

person Brian R. Bondy    schedule 20.03.2009

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

Конечно, это не гарантирует, что операция будет успешной. Многое может случиться. Даже разрешения для файла могут измениться между временем проверки и временем выполнения операции.

person BobbyShaftoe    schedule 20.03.2009

Если файл можно прочитать, его можно переместить или скопировать. Вы спрашиваете, как можно проверить, удастся ли переместить или скопировать?

person Stavros Korokithakis    schedule 20.03.2009
comment
Некоторые файловые системы разрешают доступ только для чтения, и в этом случае копирование возможно, но не перемещение. - person Tom; 20.03.2009