Apakah ada OutputStream Null di Java?


112

Saya perlu menentukan OutputStreamuntuk API yang saya gunakan, tetapi sebenarnya saya tidak membutuhkan output. Apakah Java memiliki OutputStreampadanan dengan > /dev/null?

Jawaban:


19

Sejak Java 11, ada utilitas statis yang melakukan apa yang Anda butuhkan, metode pabrik statis OutputStream.nullOutputStream():

Mengembalikan OutputStream baru yang membuang semua byte. Aliran yang dikembalikan awalnya terbuka. Aliran ditutup dengan memanggil metode close (). Panggilan berikutnya ke close () tidak berpengaruh.


Luar biasa, terima kasih telah menunjukkannya! Tapi "sejak Java 11"? Menurut saya Java 11 baru keluar satu minggu.
Brandon Yarbrough

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

15
Ini juga dapat dengan mudah diterapkan di mana pun Anda membutuhkannya menggunakan sesuatu seperti ini: OutputStream nullOutputStream = new OutputStream() { @Override public void write(int b) { } };
Hank Schultz




3

Tidak di pustaka standar AFAIK, tetapi seharusnya tidak sulit untuk membuatnya dengan mengganti tulis di OutputStream


Mengapa ini mendapat suara negatif? Memang sepele untuk menerapkan solusi ini, seperti yang ditunjukkan McDowell di atas.
pdxleif



1

Ada anak laki-laki baru di kota, yang mengurus ini seperti pesona, hanya beberapa baris kode yang seharusnya berfungsi. Its JDK 11 dan nullWriter () telah diperkenalkan di sana, yang mengurus ini. Ini dia kode untuk menangani masalah lama yang sama, cara baru tanpa mengkhawatirkan Sistem Operasi (OS).

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

Semoga ini dapat membantu seseorang!


0

Saya percaya bahwa ini yang Anda cari, saya mencari hal yang sama: Ini untuk mengarahkan aliran keluaran dari kesalahan standar, standar di objek ProcessBuilder.

Blockquote

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

Ini khusus Windows.
peterh

-4

ByteArrayOutputStreamadalah yang Anda inginkan (dengan asumsi bahwa API akan mengeluarkan teks). Buat saja yang baru.


2
Ini adalah ide yang buruk karena Anda akan mengakumulasi data dalam memori alih-alih membuangnya. Bagaimana jika penulis menulis 15 GB sampah ke BAOS Anda? Itu mungkin terjadi.
perlakukan mod Anda dengan baik
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.