हम जावा प्रोग्राम कंसोल आउटपुट को कई फाइलों में रीडायरेक्ट कैसे कर सकते हैं?


161

हम ग्रहण कंसोल आउटपुट को किसी फ़ाइल में रीडायरेक्ट कैसे कर सकते हैं? हाँ मैं:

  1. Run Configuration-> Commons-> Select a file
  2. का उपयोग करें System.setOut(PrintStream)और System.setErr(PrintStream)

1) के साथ समस्या यह है कि मुझे एक फ़ाइल के बजाय कंसोल आउटपुट को विभिन्न फ़ाइलों में रिकॉर्ड करने की आवश्यकता है।

2) के साथ समस्या यह है कि यह केवल System.out.println()एक फेंके गए अपवाद के स्टैकट्रेस द्वारा उत्पन्न कंसोल आउटपुट को संग्रहीत करता है । यह अन्य प्रकार के आउटपुट जैसे कि log4j चेतावनियों आदि को कैप्चर नहीं करता है।

हम अलग-अलग फ़ाइलों को प्रोग्रामेटिक रूप से आउटपुट को रीडायरेक्ट कैसे कर सकते हैं?


1) हो सकता है कि आप "वेरिएबल्स .." (पूर्व) C: \ test $ {???: ??। Txt
cloverink

2
यहाँ एक विचार है। अपना स्वयं का ग्रहण प्लगइन (यानी।, एक कुसुम बटन) लिखें जो एक चर (कहा जाता है ${NAME}) के लिए एक यादृच्छिक लेकिन अद्वितीय मूल्य प्रदान करेगा, फिर रन के रूप में एक ही काम करेगा। फिर $NAMEआउटपुट फ़ाइल के लिए मान के रूप में उपयोग करें । शायद?
एक दो तीन

जवाबों:


176

के रूप में चलाने के लिए और चुनें Run Configurations-> Commonऔर मानक इनपुट और आउटपुट में आप एक फ़ाइल भी चुन सकते हैं।


106
मुझे यह बिल्कुल प्रफुल्लित करने वाला लगता है कि 40 लोगों ने प्रश्न की दूसरी पंक्ति से कॉपी-पेस्ट निकाला।
एंथोनीडब्ल्यू

13
@AnthonyW मुझे लगता है कि ज्यादातर इसलिए है क्योंकि लोग यहां शीर्षक प्रश्न का नेतृत्व कर रहे हैं जो "हम किसी फ़ाइल पर ग्रहण के रीडायरेक्ट कैसे कर सकते हैं"। यह उत्तर वास्तव में शीर्षक प्रश्न का उत्तर है।
गेरोम बोचमैन

1
यदि आपको ग्रहण 4.4 (Luna) का उपयोग करके "रन कॉन्फ़िगरेशन" नहीं मिल रहा है, तो मैंने अपना लॉन्च कॉन्फ़िगरेशन (सर्वर टैब में सर्वर पर डबल क्लिक करके) खोला, "ओपन लैनच कॉन्फ़िगरेशन" पर क्लिक किया, फिर कॉमन टैब पर गया । उस संवाद के निचले आधे हिस्से में, "मानक इनपुट और आउटपुट" नामक एक अनुभाग है। यहाँ, मैं फ़ाइल पर क्लिक कर सकता हूँ और इसे एक फ़ाइल नाम दे सकता हूँ।
गाई शालनाट

1
संकेत: एक टर्मिनल खोलें, echo $TTYऔर जो कुछ भी आपकी फ़ाइल के रूप में देता है उसे निर्दिष्ट करें। फिर टर्मिनल मिरर करेगा जो आपके ग्रहण कंसोल में है।
श्रीधर सरनोबत २

2
क्या? प्रश्नकर्ता के प्रश्न को ध्यान से पढ़ने पर यह उत्तर गलत है।
कंप्यूटर

11

आप उदाहरण के लिए, आउटपुट फ़ाइल नाम के अंदर "वैरिएबल" का उपयोग कर सकते हैं:

/tmp/FetchBlock-${current_date}.txt

आज की तारीख:

वर्तमान सिस्टम समय को yyyyMMdd_HHmm के रूप में स्वरूपित करता है। वैकल्पिक स्वरूपण प्रदान करने के लिए एक वैकल्पिक तर्क का उपयोग किया जा सकता है। तर्क java.util.SimpleDateFormat के लिए मान्य पैटर्न होना चाहिए।

या आप कुछ गतिशील निर्दिष्ट करने के लिए एक system_property या एक env_var का उपयोग कर सकते हैं (या तो किसी को तर्क के रूप में निर्दिष्ट करने की आवश्यकता है)


8

आप System.out का आउटपुट प्रोग्रामेटिक रूप से सेट करके कर सकते हैं:

System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("/location/to/console.out")), true));

संपादित करें:

इस तथ्य के कारण कि यह समाधान एक पर आधारित है PrintStream, हम ऑटोफ़्लश को सक्षम कर सकते हैं, लेकिन डॉक्स के अनुसार :

ऑटोफ्लश - एक बूलियन; यदि सही है, तो जब भी बाइट सरणी लिखी जाती है, आउटपुट बफर फ्लश हो जाएगा, प्रिंटलाइन विधियों में से एक को लागू किया जाता है, या एक नई लाइन वर्ण या बाइट ('\ n') लिखा जाता है

इसलिए यदि नई लाइन नहीं लिखी गई है, तो System.out.flush()मैन्युअल रूप से याद रखें ।

(धन्यवाद रॉबर्ट तुपेलो-श्नेक)


1
ऐसा लगता है कि System.out.flush()संभवतः कुछ आउटपुट गुम होने से बचने के लिए आपको भी बंद करने की आवश्यकता है ।
रॉबर्ट टुपेलो-श्नेक

1

समस्या को हल करने के लिए मैं $ {string_prompt} चर का उपयोग करता हूं। जब एप्लिकेशन चलता है तो यह एक इनपुट डायलॉग दिखाता है। मैं उस संवाद को मैन्युअल रूप से दिनांक / समय निर्धारित कर सकता हूं।

  1. फ़ाइल पथ के अंत में कर्सर ले जाएँ। यहां छवि विवरण दर्ज करें

  2. चरों पर क्लिक करें और string_prompt चुनें यहां छवि विवरण दर्ज करें

  3. अप्लाई एंड रन को चुनें यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें


0

हम निम्न तरीके से सिस्टम वर्ग के चर को सेट करके ऐसा कर सकते हैं

System.setOut (नया PrintStream (नया FileOutputStream ("आउटपुट फ़ाइल का पथ"))। इसके अलावा, आपको 'आउट' या 'फ्लश' (System.out.close () या System.out.flush ()) वेरिएबल को बंद या फ्लश करने की आवश्यकता है ताकि आप कुछ आउटपुट गुम न करें।

स्रोत: http://xmodulo.com/how-to-save-console-output-to-file-in-blip.com

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.