Kullandığım bir OutputStream
API için bir belirtmem gerekiyor , ancak aslında çıktıya ihtiyacım yok. Java'nın bir OutputStream
eşdeğeri var mı > /dev/null
?
Kullandığım bir OutputStream
API için bir belirtmem gerekiyor , ancak aslında çıktıya ihtiyacım yok. Java'nın bir OutputStream
eşdeğeri var mı > /dev/null
?
Yanıtlar:
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.
/**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 öyle görünmüyor ama Apache Commons IO öyle. Aşağıdakilere bir göz atın:
Umarım yardımcı olur.
Ben de ekleyeceğiz, bu yüzden henüz söz değil Guava 'nın ByteStreams . nullOutputStream () , çünkü bazıları Apache Commons IO yerine Guava'yı tercih edebilir veya zaten projelerinde bulundurabilir.
Not: Guava'nın daha eski bir sürümünü kullanıyorsanız (1.0'dan 13.0'a kadar), com.google.io.NullOutputStream'i kullanmak istersiniz .
Zaten verilen cevapları yeniden düzenlemek -
Java'nın bir NullOutputStream
sınıfı yoktur. Bununla birlikte kendi rulo olabilir OutputStream
kendisine yazılı herhangi bir veri yok saydığı - diğer bir deyişle write(int b)
, write(byte[] b)
ve write(byte[] b, int off, int len)
boş yöntemi organları olacaktır. Common IO NullOutputStream
sınıfının yaptığı budur.
Hayır, ancak uygulaması oldukça kolaydır.
"System.out.println kod tabanından nasıl kaldırılır" sorusuna bakın.
Ve sonra yapmanız gereken:
System.setOut( DevNull.out );
Ya da böyle bir şey :)
Java 11, OutputStream.nullOutputStream () eklendi
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!
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:" ) ) );
ByteArrayOutputStream
istediğiniz şeydir (API'nin metin çıktısını alacağını varsayarak). Sadece yeni bir tane somutlaştırın.