Java'da Null OutputStream var mı?


113

Kullandığım bir OutputStreamAPI için bir belirtmem gerekiyor , ancak aslında çıktıya ihtiyacım yok. Java'nın bir OutputStreameşdeğeri var mı > /dev/null?

Yanıtlar:


20

Java 11'den beri, tam olarak ihtiyacınız olanı yapan statik bir yardımcı program vardır, statik fabrika yöntemi OutputStream.nullOutputStream():

Tüm baytları atan yeni bir OutputStream döndürür. Dönen akış başlangıçta açıktır. Akış, close () yöntemi çağrılarak kapatılır. Daha sonraki close () çağrılarının etkisi yoktur.


Harika, bunu belirttiğiniz için teşekkürler! Ama "Java 11'den beri"? Java 11'in sadece bir haftadır çıktığını düşünüyorum.
Brandon Yarbrough

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

15
Bu, aşağıdaki gibi bir şey kullanarak ihtiyacınız olan her yerde kolayca uygulanabilir: OutputStream nullOutputStream = new OutputStream() { @Override public void write(int b) { } };
Hank Schultz




3

Standart AFAIK kitaplığında değil, ancak OutputStream'de yazmayı geçersiz kılarak bir tane oluşturmak zor olmamalı


Bu neden reddedildi? McDowell'in yukarıda gösterdiği gibi, bu çözümü uygulamak gerçekten de önemsizdir.
pdxleif



1

Kasabada bunu bir cazibe gibi halleden yeni bir çocuk var, sadece birkaç satır kod çalışmalı. Onun JDK 11 ve nullWriter () bu ilgilenir orada tanıtıldı. İşletim Sistemi (OS) hakkında endişelenmeden aynı eski sorunla başa çıkmak için kod burada.

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

Umarım bu birine yardımcı olabilir!


0

Sanırım aradığınız şeyin bu, ben de aynı şeyi arıyordum: Bu, ProcessBuilder nesnelerinde standart olan standart hatadan çıktı akışlarını yeniden yönlendirmek içindir.

blockquote

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

Bu, Windows'a özeldir.
peterh

-4

ByteArrayOutputStreamistediğiniz şeydir (API'nin metin çıktısını alacağını varsayarak). Sadece yeni bir tane somutlaştırın.


2
Bu kötü bir fikir çünkü verileri atmak yerine bellekte biriktireceksiniz. Ya yazar BAOS'unuza 15 GB önemsiz yazarsa? Olabilir.
modlarınıza iyi davranın
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.