Comment s'assurer qu'un fichier est correctement écrit dans le système de fichiers?

StackOverflow https://stackoverflow.com/questions/14726901

  •  07-03-2022
  •  | 
  •  

Question

J'ai une application qui lit un fichier à partir d'une archive ZIP et l'enregistre dans le fichier sur le système de fichiers. Après l'avoir écrit au système de fichiers, je commence à commencer immédiatement à lire ce fichier avec un lecteur SAX2. Sur des fichiers plus gros (300+ Mo), il se produit parfois que Sax2 cesse d'analyser en raison d'une étiquette non récoltive. Mais lorsque je vérifie le fichier (ou j'essaie même de le lire plus tard), cela fonctionne, de sorte que le fichier est-il propre.

FZipKit.ExtractToStream(LFileName, LStream);
LStream.SaveToFile(OutputFilename);
SAX2.processUrl(OutputFilename);

Mon hypothèse est que le fichier n'était pas encore complètement écrit au système de fichiers lorsque j'ai commencé le processus d'analyse.

Existe-t-il un moyen de s'assurer que le fichier a été écrit ou que la vapeur a été rinçue au système de fichiers?

THX

Était-ce utile?

La solution

Je vais d'abord supposer que l'analyseur XML fonctionne correctement. S'il est incapable de lire des fichiers, bien la solution est évidente.

Ce qui nous amène à examiner comment le fichier est créé. Lorsque vous appelez SAVETOFILE, le fichier est ouvert, écrit, fermé et les tampons sont rougrés. Dans un système de vanille ordinaire, votre analyseur XML verra tout le contenu du fichier. La seule conclusion est que quelque chose interfère. Le plus semblable au suspect est votre scanner virus. De nombreux scanners, même les plus respectés, ne peuvent pas gérer correctement un fichier fermé puis rouvert immédiatement.

L'essentiel est que votre code va bien et le problème réside presque certainement avec votre environnement local.

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