Java Temporary Files, read and write -
मुझे कोड का यह टुकड़ा है
पैकेज क्लासेस; Import java.io * *; सार्वजनिक कक्षा आईपी व्यवस्थापक [सार्वजनिक बूलियन आईएक्टिव (स्ट्रिंग आईपीएड्रेस) {बूलियन एक्टिव = फॉल्स; स्ट्रिंग सीएमडी; स्ट्रिंग ओएस = System.getProperty ("os.name"); Println (ओएस); स्ट्रिंग tmpfolder = System.getProperty ("java.io.tmpdir"); Println (tmpfolder); //iptmp.deleteOnExit (); अगर (ओएस.एजेल ("लिनक्स")) (सीएमडी = "पिंग" + आईपीएड्रेस + "-सी 1"; } और (सीएमडी = "सीएमडी / सी पिंग" + आईपीएड्रेस + "-एन 1"; } {स्ट्रिंग एस = शून्य; प्रक्रिया पी = रनटाइम.गेटरीटाइम ()। Exec (सीएमडी); फ़ाइल iptmp = File.createTempFile ("ipresult", ".txt", नई फ़ाइल (tmpfolder)); BufferedReader stdInput = नया BufferedReader (नया InputStreamReader (p.getInputStream ())); जबकि ((s = stdInput.readLine ())! = नल {} System.out.println (s); S = s.toString (); BufferedWriter लेखक = नया बफ़ेड वाइटर (नया फ़्लेमरर (आईपीटीएमपी)); writer.write (रों); }} पकड़ (अपवाद पूर्व) {System.out.println (ex.getMessage ()। ToString ()); } वापसी है सक्रिय; }} मैं अस्थायी फ़ाइल में आदेश से परिणाम लिखना चाहता हूं, मुझे इस साइट के अन्य प्रश्नों से संबंधित कुछ मिला है, और यह ठीक काम करता है, लेकिन जब मैं इसे चलाता हूँ , फ़ाइल कुछ यादृच्छिक संख्या (यानी: ipresult540677216848957037.txt) के साथ बनाई गई है और यह खाली है, मैं समझ नहीं पा रहा हूं कि क्यों, मैंने यह भी पढ़ा है कि यह जावा 1.7 से संबंधित है, इसलिए इसका मतलब है कि मैं फ़ाइल को नहीं भर सकता जानकारी के साथ, जो कुछ मुझे याद आ रहा है?
हर बार जब आप फ़ाइल लिखने के लिए खोलते हैं - यानी, हर बार जब आप इस लाइन को निष्पादित करते हैं:
BufferedWriter लेखक = नया बफ़ेड वाइटर (नया फ़्लेमर (आईपीटीएमपी)); फ़ाइल को शून्य लंबाई में छोटा किया गया है। इसके अलावा, चूंकि आप कभी भी स्पष्ट रूप से बंद () पर BufferedWriter कॉल नहीं करते हैं, तो आप जो लिखते हैं वह वास्तव में फ़ाइल में नहीं फंसाएगा। नतीजतन, कोई डेटा कभी भी डिस्क पर नहीं बनाता है। यह सही ढंग से करने के लिए, सबसे पहले, ऊपर लूप को लूप से पहले ले जाएं, इसलिए यह केवल एक ही बार निष्पादित करता है। दूसरा, पाश के बाद,
जैसे कोड शामिल करें यदि (लेखक! = नल) लेखक। बंद (); अंत में, ध्यान रखें कि आपके प्रोग्राम को बिना किसी Macs पर तोड़ दिया गया है, जो न तो लिनक्स हैं, न ही वे cmd.exe का उपयोग करते हैं। जिस तरीके से आपने यह लिखा है, उसके बजाय, आप Windows के लिए स्पष्ट रूप से परीक्षण करते हैं, और यदि आप इसे ढूंढते हैं तो Windows कमांड लाइन का उपयोग करें; अन्यथा, यूनिक्स की तरह कुछ मानें, और लिनक्स संस्करण का उपयोग करें।
Comments
Post a Comment