Мені потрібно вказати OutputStream
інтерфейс API, який я використовую, але насправді у мене немає потреби у виході. Чи має Java OutputStream
еквівалент > /dev/null
?
Мені потрібно вказати OutputStream
інтерфейс API, який я використовую, але насправді у мене немає потреби у виході. Чи має Java OutputStream
еквівалент > /dev/null
?
Відповіді:
Оскільки Java 11, існує статична утиліта, яка робить саме те, що вам потрібно, статичний заводський метод OutputStream.nullOutputStream()
:
Повертає новий OutputStream, який відкидає всі байти. Повернений потік спочатку відкритий. Потік закривається викликом методу close (). Подальші дзвінки закрити () не мають ефекту.
/**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 не здається, але AOche Commons IO робить. Погляньте на наступне:
Сподіваюся, що це допомагає.
Це ще не згадується, так що я буду також додати гуави «s ByteStreams . nullOutputStream () , як деякі можуть віддати перевагу Guava над IO Apache Commons або вже є у своєму проекті.
Примітка. Якщо ви використовуєте старішу версію Guava (від 1,0 до 13,0), ви хочете використовувати com.google.io.NullOutputStream .
Перевірка вже наданих відповідей -
У Java немає NullOutputStream
класу. Однак ви можете скачати свій власний, OutputStream
який ігнорує будь-які записані до нього дані - іншими словами write(int b)
, write(byte[] b)
і у вас write(byte[] b, int off, int len)
будуть порожні органи методу. Це те, що робить загальний IO NullOutputStream
клас.
Ні, але це досить просто втілити в життя.
Дивіться це питання "Як видалити System.out.println з кодової бази"
І тоді вам просто потрібно:
System.setOut( DevNull.out );
Або щось подібне :)
Додано Java 11 OutputStream.nullOutputStream ()
У містечку є новий хлопчик, який опікується цим, як принадністю, лише кілька рядків коду повинні працювати. Її JDK 11 та nullWriter () були представлені там, що опікується цим. Тут іде код для вирішення тієї ж старої проблеми, новий спосіб, не турбуючись про операційну систему (ОС).
String fileContent = "Welcome to StackOverflow readers !! Here goes the question link...";
Writer writer = Writer.nullWriter();
writer.write(fileContent);
writer.close();
Сподіваюся, це може комусь допомогти!
Я вважаю, що це те, що ви шукаєте, я шукав те саме: Це для перенаправлення вихідних потоків зі стандартної помилки, стандартної в об'єктах ProcessBuilder.
Блок-котирування
pb.redirectError( ProcessBuilder.Redirect.appendTo( new File( "NUL:" ) ) );
ByteArrayOutputStream
це те, що ви хочете (якщо припустити, що API буде виводити текст). Просто приміркуйте нове.