2016-12-06 8 views
5

आज मैं जावा क्रमांकन और deserialization ("अजीब" क्योंकि मुझे समझ नहीं आता)जावा की कम डिस्क स्थान कितनी कम हो सकती है। कब। EOFException

मैं serializing गया था और एक linux साझा निर्देशिका से एक वस्तु deserializing में अजीब व्यवहार में आए है। जबकि सब कुछ क्रमबद्ध करने के बिना किसी भी समस्या के काम किया, लेकिन जब मैंने उसी फ़ाइल को deserialize करने की कोशिश की तो यह java. io. EOFException फेंकता है। इसके अलावा deserializing केवल इस नव निर्मित फाइल के लिए विफल रहा था और उस निर्देशिका में अन्य सभी पुरानी फाइलों के लिए काम कर रहा था।

इसलिए मैंने इंटरनेट पर खोज की और एक धागा पाया जो कम डिस्क स्थान भी इस त्रुटि का कारण बन सकता है।

इसलिए मैंने कुछ अस्थायी फ़ाइलों और वॉयला को साफ किया। मुझे समझ में नहीं आता कि कम डिस्क स्थान केवल deserialization को प्रभावित कर सकता है और serialization नहीं?

मैं अपाचे कॉमन्स SerializationUtils कक्षा का उपयोग कर रहा हूं। नीचे क्रमिकरण और deserialization के लिए कोड

SerializationUtils. serialize(myObject, new FileOutputStream(new File(sharePath+FILEName) ; 


MyObject object=SerializationUtils. deserialize(new FileInputStream(new File(sharePath+FILEName); 

अगर कोई इस व्यवहार को समझा सकता है तो यह वास्तव में सहायक होगा। मुझे लगता है कि यह Serialization में एक बग संदेह हो सकता है शायद IOException gobbling।

धन्यवाद

+0

यह तब तक नहीं हो सकता जब तक कि आप फ़ाइल लिखते समय पूर्व 'IOException' को अनदेखा नहीं करते। – EJP

+0

चूंकि मैं हाथ से क्रमबद्ध नहीं कर रहा हूं, इसलिए IOExceptions को SerializationUtils द्वारा प्रबंधित किया जाता है। यह उनके जावदोक में है। –

+0

तो यह उनकी समस्या है, या उनके खराब एपीआई डिजाइन है। – EJP

उत्तर

7

मेरे संदेह जब फ़ाइल लेखन, एक IOException फेंक दिया है कि किया जा रहा है क्योंकि डिस्क स्थान समाप्त हो गया है, लेकिन धारावाहिक डेटा की शुरुआत अभी भी डिस्क के लिए लिखा गया था है। इसका मतलब यह होगा कि डिस्क पर संग्रहीत धारावाहिक डेटा अपूर्ण है, इसलिए इसे पढ़ने से अमान्य परिणाम मिलेंगे, जो आपके मामले में ईओएफ अपवाद

इस समस्या को हल करने के लिए, आपको यह देखने की आवश्यकता है कि आईओ अपवाद कब exception.getMessage() के साथ चल रहे डिस्क स्थान के कारण फेंक दिया गया है और सुनिश्चित करें कि अधूरा डेटा न लिखें।

+0

एम अपाचे कॉमन्स का उपयोग करके, और मुझे इसके अंदर आपके दावे का साक्ष्य नहीं मिला .. मुझे पता है कि अगर आपको कुछ ऐसा लगता है जो अपाचे के सीरियलाइजेशन में IOException को गोद ले रहा है .. –

+0

क्या आप SerializationException को पकड़ने की कोशिश कर रहे हैं? क्योंकि इसे फेंक दिया जाएगा, IOException नहीं, अगर फ़ाइल लिखना IOException फेंकता है –

संबंधित मुद्दे