2011-02-12 4 views
2

PrintWriter을 파일에 쓸 때 알아야 할 내용이 있습니다. 파일이나 바이너리 형식의 ASCII 코드로 작성합니까? 감사합니다. .PrintWriter를 사용하여 ASCII 코드를 파일에 쓰기

+2

ASCII와 이진 형식의 차이점은 무엇입니까? 모두는 디스크 파일의 바이너리입니다. – Thomson

+0

printWriter는 byteOriented IO가 아닙니다. 버퍼링 된 라인 지향 IO 클래스에 속한다고 생각합니다. – Andreas

답변

0

문자 데이터를 출력합니다. 그러나 이것은 128 문자 만있는 ASCII 세트를 초과 할 수 있습니다. 그 중 첫 32는 특수 제어 문자입니다.

3

Writer은 문자를 기록하므로 파일로 끝나는 바이너리 데이터는 인코딩에 따라 다릅니다.

public class TestWriter 
{ 
    public static void main(String[] args) 
    throws UnsupportedEncodingException 
    { 
     final ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     final OutputStreamWriter out = new OutputStreamWriter(baos, "UTF-16"); 
     final PrintWriter writer = new PrintWriter(out); 

     writer.printf("abc"); 
     writer.close(); 

     for (final byte b : baos.toByteArray()) 
     { 
      System.out.printf("0x%02x ", b); 
     } 
     System.out.printf("\n"); 
    } 
} 

인쇄 0xfe 0xff 0x00 0x61 0x00 0x62 0x00 0x63 : 당신은 UTF-16과 같은 16 비트 인코딩이있는 경우

예를 들어, 각 ASCII 바이트에 대한 별도의 제로 바이트있을 것입니다.

0

대부분의 ASCII 문자를 텍스트 또는 이진 파일로 쓸 수 있으며 대부분의 문자 인코딩과 동일한 결과를 얻을 수 있습니다. 두 ASCII 문자는 텍스트 파일에서 특별한 의미를 가지며, 개행 문자 \ n과 캐리지 리턴 \ r입니다. 즉, 텍스트 파일이 있고 이러한 문자가 포함 된 String을 쓰고 싶다면 독자가 텍스트 파일의 행 끝을 구별하는 것이 어렵거나 불가능할 수 있습니다. println()과 줄 끝 (end-of-line).