2012-01-02 19 views
5

मुझे पता है कि एक RandomAccess फ़ाइल को कैसे छीनना है ताकि अंत में बाइट हटा दिए जाएं।जावा RandomAccessFile प्रारंभ से

raf.getChannel().truncate(file.length() - 4); 

या

raf.setLength(file.length() - 4); 

लेकिन यह कैसे इस तरह से कि शुरू में बाइट्स में एक RandomAccessFile काटना हटा दिया जाता है? मुझे इस फाइल की सामग्री को एक नई फाइल में लिखने की जरूरत नहीं है। मैं googled और एक जवाब नहीं मिल सका। कृपया मदद करे। अग्रिम में धन्यवाद।

उत्तर

5

यह एक ऑपरेशन नहीं है अधिकांश फ़ाइल सिस्टम समर्थन। मॉडल डिस्क पर किसी विशेष स्थान से शुरू बाइट्स का अनुक्रम है। फ़ाइलें परिवर्तनीय लंबाई हैं और संलग्न की जा सकती हैं, और इसलिए वहां से छंटनी अपेक्षाकृत आसान है।

तो आपको वास्तव में फ़ाइल में सभी बाइट्स कॉपी करने की आवश्यकता होगी। यदि संभव हो तो से बचें। कतार फ़ाइलों (जैसे कि लॉग) का प्रबंधन करने के लिए एक तकनीक है, फाइलों का अनुक्रम होना है, फिर समय-समय पर एक नई फ़ाइल शुरू करें और अंत में एक को छोड़ दें।

+0

@ टॉम के सिर के लिए धन्यवाद। मैं आपकी जानकारी का उपयोग कर निम्नलिखित के साथ आगे बढ़ गया। fc.transferTo (तलाश, फ़ाइल। लम्बाई() - तलाश, fcTmp); – prageeth

+0

यह भी बहुत बुरा है। फ्लैश मीडिया पर चल रहे फाइल सिस्टम मिटाने के चक्रों की सीमित संख्या के कारण "शुरुआत से छेड़छाड़" के लिए आदर्श होंगे। – Michael

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