2010-01-24 5 views
12

अज्ञात वर्ग (new OutputStream() { ... }) के अलावा, क्या कोई भी new FileOutputStream("/dev/null") के नैतिक समकक्ष का सुझाव दे सकता है जो विंडोज पर भी काम करता है?जावा के लिए प्लेटफ़ॉर्म-स्वतंत्र/dev/null आउटपुट सिंक

अगर कोई सोच रहा है कि 'यह क्या है?'

मेरे पास एक ऐसा प्रोग्राम है जो फ़ाइल पर एक स्थिरता विश्लेषण करता है। इसमें 'वर्बोज़' विकल्प है। जब वर्बोज़ विकल्प चालू होता है, तो मैं बहुत सारे आउटपुट देखना चाहता हूं। कार्यक्रम जल्दबाजी में नहीं है, यह एक उपकरण है, इसलिए यदि मैं आउटपुट चाहता हूं तो परीक्षण करने के लिए उन सभी अतिरिक्त if कथन लिखने की बजाय, मैं वांछित होने पर इसे बिट-बाल्टी में लिखना चाहता हूं।

+0

आप क्यों नहीं बस डेटा को छोड़ना चाहते नहीं होगा? –

+0

@ टॉम हौटिन - व्याख्यान को समझाने के लिए संपादित किया गया। – bmargulies

+0

ठीक है। मैंने सोचा था कि आप "अज्ञात वर्ग" बस ऐसा करने जा रहे थे जो @iseletsk ने सुझाव दिया था। –

उत्तर

18

आप Apache Commons से NullOutputStream उपयोग कर सकते हैं https://commons.apache.org/proper/commons-io/javadocs/api-2.4/org/apache/commons/io/output/NullOutputStream.html

या बस को लागू अपनी खुद की

package mypackage; 

import java.io.OutputStream; 
import java.io.IOException; 

public class NullOutputStream extends OutputStream { 
    public void write(int i) throws IOException { 
     //do nothing 
    } 
} 
+3

(नल ऑब्जेक्ट पैटर्न, विशेष केस पैटर्न का एक विशेष मामला।) (मैं एक ओवरराइड जोड़ता हूं (@ ओवरराइड) 'लिखने (int, int, बाइट [])' के लिए जोड़ा गया (हालांकि शायद अप्रासंगिक) प्रदर्शन। मैंने हमेशा शून्य ऑब्जेक्ट के लिए एक ही उदाहरण का उपयोग किया है, लेकिन मुझे लगता है कि आपको बाहरी लॉकिंग समस्याएं मिल सकती हैं ('रीडर '/'लेखक को यहां सजावट करने वालों के साथ समस्या है)।) (इस टिप्पणी में एक जानबूझकर गलती है।) –

+0

' ओवरराइड 'के बारे में अच्छा बिंदु, जो जानबूझकर गलती को पकड़ लेगा। – trashgod

+0

मैं सभी "लिखने()" विधियों को ओवरराइड करना चाहता हूं। मुझे लगता है कि जेवीएम यह समझने के लिए पर्याप्त स्मार्ट हो सकता है कि एक सरणी का लूप लिखना अभी भी नो-ऑप है और उनको नो-ऑप्स के रूप में भी व्यवहार करता है, लेकिन मुझे जेवीएम रनटाइम ऑप्टिमाइज़ेशन पर निर्भर रहने से नफरत है। –

4

NUL विंडोज एनटी के लिए काम करता है, लेकिन यह * NIX में काम नहीं करता है।

output = new FileOutputStream("NUL"); 

बेहतर उपयोग Commons IO की NullOutputStream बजाय मंच स्वतंत्र होने के लिए।

+1

एनयूएल यूनिक्स पर काम नहीं करता है। यह एक डॉस remniscense है। –

+0

पुष्टि के लिए धन्यवाद। परीक्षण करने के लिए हाथ में एक निक्स प्लेटफॉर्म नहीं था :) – BalusC

+0

दिमाग अगर मैं केवल कॉमन्स आईओ सुझाव रखने के लिए संपादित करता हूं? – bmargulies

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