Question

J'ai un programme qui vérifie périodiquement pour les nouveaux fichiers, puis les traiter.

Parce que je veux être sûr que le fichier ne soit pas copié sur FTP, je propose d'abord le fichier.
La chose étrange est que dans Windows Server 2008, le fichier est déplacé, même en cours de copie, et les extrémités de l'opération de copie FTP dans le nouvel emplacement.

Comment cela peut-il être possible?

Je l'ai testé l'utilisation de ce problème de simples lignes de code dans un fichier vbs:

dim fso
set fso = createobject("Scripting.FileSystemObject")
fso.MoveFile "bigfile.zip", "moved\bigfile.zip"
Était-ce utile?

La solution

Eh bien, lorsque vous déplacez un fichier (dans le même lecteur), vous ne dire le système de fichiers que le fichier se trouve un autre endroit, vous vous déplacez pas vraiment l'une des données autour. Donc, je suppose que le mouvement va de l'avant et indique le système de fichiers où le fichier se trouve maintenant, mais l'opération FTP a déjà alloué un espace sur le disque dur pour les données réelles et donc le fait que le fichier a été déplacé, a gagné » t affecter l'endroit où sont stockées les données de quelque façon, et il fonctionne.

Si vous avez déplacé le fichier à un autre lecteur je suppose que quelque chose romprait quelque part.

Si vous avez accès au client, vous pourriez avoir l'écriture client un autre petit fichier après le nom bigfile.zip.complete ou similaire, et votre application serveur pourrait attendre que avant de commencer le traitement, de cette façon vous seriez sûr que il est la copie terminée (cela fonctionnerait aussi dans le cas où la connexion descend à mi-parcours et le client cesse de transférer le fichier même si elle est pas fini).

Ou si vous n'avez pas accès au client, peut-être que vous pourriez essayer de regarder la taille du fichier, si elle n'a pas changé en tant de secondes ou minutes, puis il est terminé, espérons.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top