2010-01-24 5 views
12

익명의 클래스 (new OutputStream() { ... }) 이외에 누구도 Windows에서 작동하는 new FileOutputStream("/dev/null")의 도덕적 동등성을 제안 할 수 있습니까?플랫폼 독립적 인/dev/null Java 용 출력 싱크

누군가가 '이게 무슨 목적 이니?'

파일에 대한 일관성 분석을 수행하는 프로그램이 있습니다. '자세한 정보'옵션이 있습니다. 자세한 옵션이 켜지면 많은 출력을보고 싶습니다. 이 프로그램은 서두르지 않고 도구이기 때문에 여분의 if 문을 쓰는 대신 출력을 원한다면 대신 비트 버킷에 쓰고 싶을 때가 있습니다.

+0

왜 그냥 데이터를 폐기하고 싶지 않아요? –

+0

@Tom Hawtin - 설명이 수정되었습니다. – bmargulies

+0

오케이. 나는 당신이 "익명의 클래스"가 @iseletsk가 제안한 것을 할 것이라고 생각했다. –

답변

18

당신은 https://commons.apache.org/proper/commons-io/javadocs/api-2.4/org/apache/commons/io/output/NullOutputStream.html

하거나 구현 아파치 평민 에서 NullOutputStream을 사용할 수 있습니다 자신의

package mypackage; 

import java.io.OutputStream; 
import java.io.IOException; 

public class NullOutputStream extends OutputStream { 
    public void write(int i) throws IOException { 
     //do nothing 
    } 
} 
+3

(특수 문자 패턴의 특수 사례 인 Null Object Pattern.) (@ 오버라이드)'write (int, int, byte [])'추가 (아마도 무의미한) 성능을 위해. 나는 항상 null 개체에 대해 하나의 인스턴스를 사용했지만 외부 잠금 문제가 발생할 수 있습니다./Writer는 여기에 데코레이터에 문제가 있습니다.) (이 주석에는 고의적 인 실수가 포함되어 있습니다.) –

+0

고의적 인 실수를 포착 할'@ Override'에 대한 좋은 지적이 있습니다. – trashgod

+0

"write()"메서드를 모두 무시하고 싶습니다. 나는 JVM이 배열의 루프 쓰기가 여전히 no-op이고 그 노드도 no-ops로 취급한다는 것을 알기에 충분히 똑똑하다고 생각하지만 JVM 런타임 최적화에 의존하는 것을 싫어한다. –

4

NUL은 Windows NT에서 작동하지만 * NIX에서는 작동하지 않습니다.

output = new FileOutputStream("NUL"); 

더 나은 사용 Commons IONullOutputStream 대신 플랫폼 독립적이어야합니다.

+1

NUL이 유닉스에서 작동하지 않습니다. 그것은 DOS remniscense입니다. –

+0

확인해 주셔서 감사합니다. 테스트 바로 바로 옆에 nix 플랫폼이 없었습니다. – BalusC

+0

Commons IO 제안 만 유지하도록 편집하면 마음이 들립니까? – bmargulies

관련 문제