كيفية التأكد من أن الملف مكتوب بشكل صحيح لنظام الملفات؟

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

  •  07-03-2022
  •  | 
  •  

سؤال

أنا هافا تطبيق يقرأ ملف من أرشيف zip ويحفظه إلى ملف على نظام الملفات. بعد كتابةها إلى نظام الملفات، أبدأ البدء على الفور لقراءة هذا الملف باستخدام قارئ SAX2. على الملفات الأكبر (300+ ميغابايت) يحدث ذلك في بعض الأحيان، أن SAX2 يتوقف عن التحليل بسبب علامة مغلقة. ولكن عندما أتحقق من الملف (أو حتى أحاول قراءته مرة أخرى لاحقا)، فهذا يعمل، لذلك الملف نفسه على موافق.

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

افتراضي هو أنه لم يكن الملف مكتوبا بالكامل بعد إلى نظام الملفات عندما بدأت عملية التحليل.

هل هناك طريقة للتأكد من أن الملف مكتوب أو تم مسح البخار إلى نظام الملفات؟

شكرا

هل كانت مفيدة؟

المحلول

انا ذاهب أولا، افترض أن محلل XML يعمل بشكل صحيح. إذا كان غير قادر على قراءة الملفات، حسنا الحل واضح.

مما يدل بنا للنظر في كيفية إنشاء الملف. عند استدعاء SavetoFile، يتم فتح الملف، مكتوب، مغلق ومخازن المخازن المؤقتة. في نظام الفانيليا العادي، ستشهد محلل XML الخاص بك محتوى الملف بالكامل. الاستنتاج الوحيد هو أن هناك شيئا يتداخل. الأكثر ما يشبه المشتبه به هو ماسحة الفيروسات الخاصة بك. العديد من الماسحات الضوئية، حتى الأكثر احتراما، لا يمكن أن تتعامل مع ملف مغلقة بشكل صحيح وإعادة فتحها على الفور.

الخلاصة القول هي أن الكود الخاص بك على ما يرام، وبالتأكيد تكمن المشكلة في بيئتك المحلية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top