OutputStream
使用しているAPIのを指定する必要がありますが、実際には出力は必要ありません。JavaにOutputStream
相当するものはあり> /dev/null
ますか?
OutputStream
使用しているAPIのを指定する必要がありますが、実際には出力は必要ありません。JavaにOutputStream
相当するものはあり> /dev/null
ますか?
回答:
Java 11以降、必要な機能を正確に実行する静的ユーティリティ、静的ファクトリメソッドがありOutputStream.nullOutputStream()
ます。
すべてのバイトを破棄する新しいOutputStreamを返します。返されたストリームは最初は開いています。ストリームは、close()メソッドを呼び出すことによって閉じられます。以降のclose()の呼び出しは無効です。
/**Writes to nowhere*/
public class NullOutputStream extends OutputStream {
@Override
public void write(int b) throws IOException {
}
}
OutputStream nullOutputStream = new OutputStream() { @Override public void write(int b) { } };
Javaはそう思わないかもしれませんが、Apache Commons IOはそうです。以下を見てください。
お役に立てば幸いです。
まだ言及されていないので、GuavaのByteStreamsも追加します。nullOutputStream()。 IOよりもGuavaを好む人もいれば、すでにプロジェクトに持っている人もいるでしょう。
注:古いバージョンのGuava(1.0から13.0)を使用している場合は、com.google.io.NullOutputStreamを使用します。
すでに提供されている回答の再ハッシュ-
JavaにはNullOutputStream
クラスがありません。ただし、OutputStream
書き込まれたデータを無視する独自のロールを実行することもできます。つまりwrite(int b)
、write(byte[] b)
とwrite(byte[] b, int off, int len)
空のメソッド本体を持っています。これは、Common IO NullOutputStream
クラスが行うことです。
標準ライブラリAFAIKにはありませんが、OutputStreamで書き込みをオーバーライドして作成することは難しくありません。
いいえ。ただし、実装は非常に簡単です。
この質問「コードベースからSystem.out.printlnを削除する方法」を参照してください
そして、あなたはただ:
System.setOut( DevNull.out );
またはそのようなもの:)
Java 11にOutputStream.nullOutputStream()が追加されました
町に新しい男の子がいます。これは魅力のようにこれを処理し、ほんの数行のコードが機能するはずです。そのJDK 11とnullWriter()が導入され、これを処理します。ここでは、オペレーティングシステム(OS)を気にせずに、同じ古い問題を新しい方法で処理するコードを示します。
String fileContent = "Welcome to StackOverflow readers !! Here goes the question link...";
Writer writer = Writer.nullWriter();
writer.write(fileContent);
writer.close();
これが誰かに役立つことを願っています!
これはあなたが探しているものだと思います。同じことを探していました。これは、ProcessBuilderオブジェクトの標準エラーから標準出力から出力ストリームをリダイレクトするためのものです。
ブロッククォート
pb.redirectError( ProcessBuilder.Redirect.appendTo( new File( "NUL:" ) ) );