Saya perlu menentukan OutputStream
untuk API yang saya gunakan, tetapi sebenarnya saya tidak membutuhkan output. Apakah Java memiliki OutputStream
padanan dengan > /dev/null
?
Saya perlu menentukan OutputStream
untuk API yang saya gunakan, tetapi sebenarnya saya tidak membutuhkan output. Apakah Java memiliki OutputStream
padanan dengan > /dev/null
?
Jawaban:
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.
/**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 sepertinya tidak tetapi Apache Commons IO melakukannya. Perhatikan yang berikut ini:
Semoga membantu.
Ini tidak disebutkan belum, jadi saya juga akan menambahkan Jambu 's ByteStreams . nullOutputStream () , karena beberapa orang mungkin lebih memilih Guava daripada Apache Commons IO atau sudah memilikinya dalam proyek mereka.
Catatan: Jika Anda menggunakan Guava versi lama (dari 1.0 hingga 13.0), Anda ingin menggunakan com.google.io.NullOutputStream .
Mengulangi jawaban yang sudah diberikan -
Java tidak memiliki NullOutputStream
kelas. Namun Anda dapat menggulung milik Anda sendiri OutputStream
yang mengabaikan data apa pun yang tertulis padanya - dengan kata lain write(int b)
, write(byte[] b)
dan write(byte[] b, int off, int len)
akan memiliki badan metode kosong. Inilah yang dilakukan kelas Common IO NullOutputStream
.
Tidak, tetapi penerapannya cukup mudah.
Lihat pertanyaan ini "Bagaimana cara menghapus System.out.println dari basis kode"
Dan kemudian Anda hanya perlu:
System.setOut( DevNull.out );
Atau semacam itu :)
Java 11 menambahkan OutputStream.nullOutputStream ()
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!
ByteArrayOutputStream
adalah yang Anda inginkan (dengan asumsi bahwa API akan mengeluarkan teks). Buat saja yang baru.