FileSystemObject перемещает файл, даже когда копируется по FTP - PullRequest
1 голос
/ 02 декабря 2010

У меня есть программа, которая периодически проверяет наличие новых файлов, а затем обрабатывает их.

Поскольку я хочу быть уверенным, что файл не копируется по FTP, я сначала перемещаю файл.
Странно то, что в Windows Server 2008 файл перемещается даже при копировании, и операция копирования по FTP заканчивается в новом месте.

Как это возможно?

Я проверил проблему, используя следующие простые строки кода в файле VBS:

dim fso
set fso = createobject("Scripting.FileSystemObject")
fso.MoveFile "bigfile.zip", "moved\bigfile.zip"

1 Ответ

1 голос
/ 04 декабря 2010

Что ж, когда вы перемещаете файл (на том же диске), вы только сообщаете файловой системе, что файл может быть найден где-то еще, но на самом деле вы не перемещаете никакие данные.Поэтому я предполагаю, что движение идет вперед и сообщает файловой системе, где теперь можно найти файл, но операция FTP уже выделила место на жестком диске для фактических данных, и поэтому тот факт, что файл был перемещен, выиграл 'Это никак не влияет на то, где хранятся данные, и поэтому все это работает.

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

Если вы 'у нас есть доступ к клиенту, вы могли бы после этого написать еще один крошечный файл с именем bigfile.zip.complete или аналогичным, и ваше серверное приложение может дождаться этого перед началом обработки, так что вы будете уверены, что оно завершило копирование (это также будет работать в случае, если соединение обрывается на полпути, и клиент прекращает загрузку файла, даже если он еще не завершен).

Или, если у вас нет доступа к клиенту, возможно, вы могли бы попробовать посмотреть наразмер файла, если он не изменился в течение стольких секунд или минут, то мы надеемся, что он закончен.

...