Когда я копирую большой файл с помощью Проводника в Windows 7, полученный файл отображается пустым, пока процесс копирования не будет завершен. Где я могу найти содержимое скопированного файла?
3 ответа
Где я могу найти содержимое скопированного файла?
В файле. Одно из самых ненормальных действий, которые Microsoft сохранила в MS-DOS в нескольких операционных системах, заключается в том, что метаданные файла - в частности, метки времени, атрибуты и информация о размере - являются (в случае по умолчанию, когда специальные флаги не установлены программой) запись в файл (для изменения этого поведения) не обновляется до тех пор, пока открытый дескриптор файла не будет закрыт или не будет выполнен вызов очистки для открытого дескриптора файла.
Это особенно сбивает с толку пользователей Unix и Linux. В этих операционных системах копия i-узла в памяти всегда содержит текущий размер файла, даже если i-узел еще не записан на диск, и именно это будет возвращать stat()
/fstat()
и, таким образом, что будет отображать (длинная форма) каталог.
В Windows NT, что FindFirstFile()
и соавт. возврат не изменится, пока дескриптор файла не будет закрыт или очищен. Во время операции копирования это обычно означает дескриптор файла, который процесс копирования использует для записи в файл назначения, закрываемый в конце операции. Но можно принудительно обновить метаданные, просто открыв и закрыв файл во второй раз, пока происходит процесс копирования.
Если вы видите пустой файл в месте назначения, то то, что копируется, исчезло.
Проводник Windows создаст файл назначения для записи, но не внесет никаких изменений, если процесс был прерван. Файл назначения должен был быть удален автоматически, но иногда система может дать сбой, прежде чем он сможет это сделать.
Если вам нужна восстанавливаемая копия, используйте сторонние обработчики копирования.
Если Проводник копирует между двумя расположениями в одной и той же файловой системе, по моему опыту, он все время копирует в конечный файл, но отображение размера файла не всегда обновляется. Вы пытались открыть окно CMD и набрать DIR несколько раз?
При копировании между двумя файловыми системами, опять же по моему опыту, размер файла Explorer, кажется, обновляется более надежно.