Tôi cần chỉ định một OutputStream
API mà tôi đang sử dụng, nhưng tôi thực sự không có nhu cầu về đầu ra. Java có OutputStream
tương đương với > /dev/null
?
Tôi cần chỉ định một OutputStream
API mà tôi đang sử dụng, nhưng tôi thực sự không có nhu cầu về đầu ra. Java có OutputStream
tương đương với > /dev/null
?
Câu trả lời:
Kể từ Java 11, có một tiện ích tĩnh thực hiện chính xác những gì bạn cần, một phương thức static factory OutputStream.nullOutputStream()
:
Trả về một Dòng đầu ra mới loại bỏ tất cả các byte. Luồng trả về ban đầu được mở. Luồng được đóng bằng cách gọi phương thức close (). Các lệnh gọi tiếp theo để đóng () không có hiệu lực.
/**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 thì không nhưng Apache Commons IO thì có. Hãy xem những điều sau:
Hy vọng rằng sẽ giúp.
Nó không được nhắc đến nữa, vì vậy tôi cũng sẽ thêm ổi 's ByteStreams . nullOutputStream () , vì một số có thể thích Guava hơn Apache Commons IO hoặc đã có nó trong dự án của họ.
Lưu ý: Nếu bạn sử dụng phiên bản Guava cũ hơn (từ 1.0 đến 13.0), bạn muốn sử dụng com.google.io.NullOutputStream .
Nhấn mạnh lại các câu trả lời đã được cung cấp -
Java không có một NullOutputStream
lớp. Tuy nhiên, bạn có thể cuộn của riêng bạn OutputStream
mà bỏ qua bất kỳ dữ liệu nào được ghi vào nó - nói cách khác write(int b)
, write(byte[] b)
và write(byte[] b, int off, int len)
sẽ có các phần thân phương thức trống. Đây là những gì NullOutputStream
lớp IO chung thực hiện.
Không, nhưng nó khá dễ thực hiện.
Xem câu hỏi này "Cách xóa System.out.println khỏi codebase"
Và sau đó bạn chỉ cần:
System.setOut( DevNull.out );
Hoặc điều tương tự :)
Java 11 đã thêm OutputStream.nullOutputStream ()
Có một chàng trai mới trong thị trấn, chăm sóc điều này như một cái duyên, chỉ cần vài dòng mã là có tác dụng. Nó JDK 11 và nullWriter () đã được giới thiệu ở đó, mà sẽ chăm sóc về điều này. Đây là mã để giải quyết cùng một vấn đề cũ, theo cách mới mà không cần lo lắng về Hệ điều hành (OS).
String fileContent = "Welcome to StackOverflow readers !! Here goes the question link...";
Writer writer = Writer.nullWriter();
writer.write(fileContent);
writer.close();
Hy vọng điều này có thể giúp một ai đó!
Tôi tin rằng đây là những gì bạn đang tìm kiếm, tôi cũng đang tìm kiếm điều tương tự: Đây là để chuyển hướng các luồng đầu ra từ lỗi chuẩn, chuẩn trong các đối tượng ProcessBuilder.
Blockquote
pb.redirectError( ProcessBuilder.Redirect.appendTo( new File( "NUL:" ) ) );
ByteArrayOutputStream
là những gì bạn muốn (giả sử rằng API sẽ xuất ra văn bản). Chỉ cần tạo một cái mới.