Necesito especificar una OutputStream
para una API que estoy usando, pero en realidad no necesito la salida. ¿Java tiene un OutputStream
equivalente a > /dev/null
?
Necesito especificar una OutputStream
para una API que estoy usando, pero en realidad no necesito la salida. ¿Java tiene un OutputStream
equivalente a > /dev/null
?
Respuestas:
Desde Java 11, existe una utilidad estática que hace exactamente lo que necesita, un método de fábrica estático OutputStream.nullOutputStream()
:
Devuelve un nuevo OutputStream que descarta todos los bytes. La secuencia devuelta está inicialmente abierta. La secuencia se cierra llamando al método close (). Las posteriores llamadas a close () no tienen ningún efecto.
/**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 no parece, pero Apache Commons IO sí. Eche un vistazo a lo siguiente:
Espero que ayude.
No se menciona, sin embargo, así que también a añadir guayaba 's ByteStreams . nullOutputStream () , ya que algunos podrían preferir Guava sobre Apache Commons IO o ya lo tienen en su proyecto.
Nota: Si usa una versión anterior de Guava (de 1.0 a 13.0), desea usar com.google.io.NullOutputStream .
Rehaciendo las respuestas ya proporcionadas -
Java no tiene una NullOutputStream
clase. Sin embargo, puede rodar el suyo OutputStream
que ignore cualquier dato escrito en él, en otras palabras write(int b)
, write(byte[] b)
y write(byte[] b, int off, int len)
tendrá cuerpos de método vacíos. Esto es lo que hace la NullOutputStream
clase Common IO .
No, pero es bastante fácil de implementar.
Consulte esta pregunta "Cómo eliminar System.out.println del código base"
Y luego solo tienes que:
System.setOut( DevNull.out );
O algo así :)
Java 11 agregó OutputStream.nullOutputStream ()
Hay un chico nuevo en la ciudad, que se encarga de esto como un encanto, solo unas pocas líneas de código deberían funcionar. Allí se ha introducido su JDK 11 y nullWriter () , que se encarga de esto. Aquí va el código para lidiar con el mismo problema anterior, una nueva forma sin preocuparse por el sistema operativo (SO).
String fileContent = "Welcome to StackOverflow readers !! Here goes the question link...";
Writer writer = Writer.nullWriter();
writer.write(fileContent);
writer.close();
¡Espero que esto pueda ayudar a alguien!
Creo que esto es lo que está buscando, yo estaba buscando lo mismo: esto es para redirigir los flujos de salida del error estándar, estándar en los objetos ProcessBuilder.
Blockquote
pb.redirectError( ProcessBuilder.Redirect.appendTo( new File( "NUL:" ) ) );
ByteArrayOutputStream
es lo que desea (asumiendo que la API generará texto). Simplemente crea una instancia nueva.