除了匿名類(new OutputStream() { ... }
),任何人都可以提出的new FileOutputStream("/dev/null")
也適用於Windows道德等價?平臺無關的/ dev/null的輸出水槽的Java
萬一有人在想「這是什麼呢?」
我有一個程序,做了一致性分析上的文件。它有一個'詳細'選項。當詳細選項打開時,我想看到很多輸出。該程序並不着急,它是一個工具,所以不是寫所有這些額外的if
語句來測試我是否需要輸出,我只是想在不需要時將它寫入比特桶。
除了匿名類(new OutputStream() { ... }
),任何人都可以提出的new FileOutputStream("/dev/null")
也適用於Windows道德等價?平臺無關的/ dev/null的輸出水槽的Java
萬一有人在想「這是什麼呢?」
我有一個程序,做了一致性分析上的文件。它有一個'詳細'選項。當詳細選項打開時,我想看到很多輸出。該程序並不着急,它是一個工具,所以不是寫所有這些額外的if
語句來測試我是否需要輸出,我只是想在不需要時將它寫入比特桶。
您可以使用NullOutputStream從Apache的百科全書 https://commons.apache.org/proper/commons-io/javadocs/api-2.4/org/apache/commons/io/output/NullOutputStream.html
或者只是實現自己的
package mypackage;
import java.io.OutputStream;
import java.io.IOException;
public class NullOutputStream extends OutputStream {
public void write(int i) throws IOException {
//do nothing
}
}
(空對象模式,特例模式的一個特例。)(我會添加一個覆蓋(帶@覆蓋)write(int,int,byte [])'添加(儘管可能無關緊要)性能。我一直使用null對象的單個實例,但我想你可能會遇到外部鎖定問題('Reader' /'Writer's在這裏與裝飾器有問題)。)(這個評論包含一個故意的錯誤。) – 2010-01-24 19:43:31
關於'@ Override'的好處,它會吸收故意的錯誤。 – trashgod 2010-01-24 21:21:18
我想覆蓋所有的「寫()」方法。我猜JVM可能足夠聰明,可以發現循環寫入的數組仍然是空操作,並將它們視爲無操作,但我討厭依賴於JVM運行時優化。 – 2012-08-15 18:47:18
NUL
適用於Windows NT,但是,這並不在* NIX工作。
output = new FileOutputStream("NUL");
更好地使用Commons IO的NullOutputStream
,而不是獨立於平臺。
NUL不適用於Unix。這是一個DOS remniscense。 – 2010-01-24 17:35:25
謝謝您的確認。沒有一個nix平臺在手邊測試:) – BalusC 2010-01-24 17:36:53
記住如果我編輯只保留Commons IO的建議? – bmargulies 2010-01-24 17:45:27
爲什麼你不只是要丟棄的數據? – 2010-01-24 17:38:30
@湯姆霍廷 - 編輯的解決方案。 – bmargulies 2010-01-24 17:44:50
好的。我以爲你「匿名課堂」只是做什麼@iseletsk建議。 – 2010-01-24 19:39:17