JavaにNull OutputStreamはありますか?


112

OutputStream使用しているAPIのを指定する必要がありますが、実際には出力は必要ありません。JavaにOutputStream相当するものはあり> /dev/nullますか?

回答:


19

Java 11以降、必要な機能を正確に実行する静的ユーティリティ、静的ファクトリメソッドがありOutputStream.nullOutputStream()ます。

すべてのバイトを破棄する新しいOutputStreamを返します。返されたストリームは最初は開いています。ストリームは、close()メソッドを呼び出すことによって閉じられます。以降のclose()の呼び出しは無効です。


それを指摘してくれてありがとう!しかし、「Java 11以降」?Java 11がリリースされてから1週間しか経っていないと思います。
Brandon Yarbrough

116
/**Writes to nowhere*/
public class NullOutputStream extends OutputStream {
  @Override
  public void write(int b) throws IOException {
  }
}

15
あなたはこのようなものを使用して、それを必要な場所これはまた、容易に実装することができます: OutputStream nullOutputStream = new OutputStream() { @Override public void write(int b) { } };
ハンク・シュルツ



15

すでに提供されている回答の再ハッシュ-

JavaにはNullOutputStreamクラスがありません。ただし、OutputStream書き込まれたデータを無視する独自のロールを実行することもできます。つまりwrite(int b)write(byte[] b)write(byte[] b, int off, int len)空のメソッド本体を持っています。これは、Common IO NullOutputStreamクラスが行うことです。



3

標準ライブラリAFAIKにはありませんが、OutputStreamで書き込みをオーバーライドして作成することは難しくありません。


なぜこれは反対投票になったのですか?McDowellが上で示したように、このソリューションを実装することは確かに簡単です。
pdxleif 2012



1

町に新しい男の子がいます。これは魅力のようにこれを処理し、ほんの数行のコードが機能するはずです。そのJDK 11nullWriter()が導入され、これを処理します。ここでは、オペレーティングシステム(OS)を気にせずに、同じ古い問題を新しい方法で処理するコードを示します。

String fileContent = "Welcome to StackOverflow readers !! Here goes the question link...";
Writer writer = Writer.nullWriter();
writer.write(fileContent);
writer.close();

これが誰かに役立つことを願っています!


0

これはあなたが探しているものだと思います。同じことを探していました。これは、ProcessBuilderオブジェクトの標準エラーから標準出力から出力ストリームをリダイレクトするためのものです。

ブロッククォート

pb.redirectError( ProcessBuilder.Redirect.appendTo( new File( "NUL:" ) ) );
  • ドム

これはWindows固有です。
peterh 2017

-4

ByteArrayOutputStream(APIがテキストを出力することを前提としています)。新しいものをインスタンス化するだけです。


2
データを破棄する代わりにメモリに蓄積するため、これは悪い考えです。ライターがBAOSに15 GBのジャンクを書き込むとどうなりますか?それは起こり得る。
MODを
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.