जावा में एक टेक्स्ट फ़ाइल की पहली पंक्ति बदलें

मेरे पास एक टेक्स्ट फ़ाइल है जहां मैं फ़ाइल की केवल पहली पंक्ति को बदलना चाहता हूं। फ़ाइल लाखों पंक्तियों तक लंबी हो सकती है, इसलिए मुझे सबकुछ पर लूप नहीं करना पड़ेगा, इसलिए मैं सोच रहा हूं कि ऐसा करने का कोई और तरीका है या नहीं।

मैं कुछ नियमों को पहली पंक्ति में भी लागू करना चाहता हूं ताकि मैं कुछ शब्दों के उदाहरणों को दूसरे शब्दों के साथ बदल सकूं।

क्या यह संभव है?

8

5 उत्तर

एक <�कोड> RandomAccessFile चाल चलेंगे, जब तक परिणामी रेखा की लंबाई मूल रेखा की लंबाई से अलग न हो।

यदि यह पता चला है कि आपको एक प्रतिलिपि करने के लिए मजबूर किया जाता है (जहां पहली पंक्ति बदल दी जाती है और शेष डेटा की प्रतिलिपि बनाई जाएगी), तो मैं एक BufferedReader और BufferedWriter । पहले पंक्ति को पढ़ने के लिए सबसे पहले BufferedReader readLine() का उपयोग करें। इसे संशोधित करें और इसे BufferedWriter पर लिखें। फिर फ़ाइल के शेष भाग की एक ब्रूट-बल प्रतिलिपि करने के लिए char [] सरणी का उपयोग करें। लाइन द्वारा कॉपी लाइन करने से यह अधिक कुशल होगा। अगर आपको विवरण चाहिए तो मुझे बताएं ..

एक और विकल्प एक ही फाइल के अंदर पढ़ने और लिखने के लिए है। यद्यपि यह थोड़ा और जटिल होगा। :) अगर आपको इस पर ब्योरे की ज़रूरत है तो मुझे बताएं ..

15
जोड़ा
यदि आप स्ट्रिंग की लंबाई को प्रतिस्थापित करना चाहते हैं तो क्या आप कुछ जानकारी प्रदान कर सकते हैं। क्या यह एक नई फाइल की प्रतिलिपि के बिना संभव है
जोड़ा लेखक png, स्रोत
यदि लंबाई अलग है तो आपको कम से कम सभी बाइट्स को फिर से लिखना होगा, या तो एक ही फ़ाइल में या एक अलग फ़ाइल में।
जोड़ा लेखक volley, स्रोत
किसी के पास RandomAccessFile के साथ ऐसा करने का कोड उदाहरण है?
जोड़ा लेखक jymbo, स्रोत

यदि नई पंक्ति में मूल पहली पंक्ति की तुलना में वर्णों की एक अलग मात्रा (बाइट्स) है, तो आपको अंतराल से छुटकारा पाने या दूसरी पंक्ति के ओवरराइटिंग भाग से बचने के लिए पूरी फ़ाइल को फिर से लिखना होगा।

बेशक, विभिन्न टूल्स जैसे String.replaceFirst (स्ट्रिंग रेगेक्स, स्ट्रिंग प्रतिस्थापन) ( javadoc ) या RandomAccessFile ( javadoc ) इस कार्य के साथ आपकी सहायता कर सकता है।

4
जोड़ा

Why not write a Perl script and invoke it using Runtime.exec(). Not a pure java solution though. Also have a look at this article before going deep http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

4
जोड़ा

आप एक RandomAccesssFile चाहते हैं। फ़ाइल में जहां भी आप फ़ाइल में चाहते हैं उसे पढ़ और लिख सकते हैं।

यह एक इनपुटस्ट्रीम और आउटपुटस्ट्रीम की तरह है, लेकिन यह आपको जहां चाहें पढ़ने और लिखने की अनुमति देता है।

2
जोड़ा

apply a regex only once. String.replaceFirst("regex", "replacementstring") : http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#replaceFirst(java.lang.String,%20java.lang.String)

फ़ाइल को RandomAccessFile के रूप में खोलें। स्ट्रिंग में पहली पंक्ति पढ़ें और फिर परिवर्तन लागू करें और फिर स्ट्रिंग को वापस लिखें।

1
जोड़ा
"फ़ाइल लाखों पंक्तियों लंबी हो सकती है" - regexps के साथ शुभकामनाएं! जबरदस्त हंसी
जोड़ा लेखक Vladimir Dyuzhev, स्रोत
केवल तभी जब लाइन 1 की लंबाई बदलती नहीं है
जोड़ा लेखक Cheekysoft, स्रोत