2009-09-07 1 views
2

파일이 있고 문자열에 '42'를 쓰고 싶습니다. 예를 들어 16 진수의 2a입니다. , 어떻게해야합니까? outfile.write (42) 또는 outfile.write (2a) 같은 것을 사용할 수 있고 파일에 문자열을 쓰지 않을 수 있기를 원합니다.(Java) 문자열이 아닌 파일에 십진수/16 진수를 쓰십시오.

당신은을 사용하는 것이 좋습니다 바이너리 데이터를 작성하기위한

답변

7

(내가 올바른 검색어를 모르는 아마 때문에,이 간단한 질문입니다하지만 구글의 대답을 찾을 수 없습니다 실현) OutputStream (예 : FileOutputStream) 당신은 아마 Writer (예 : FileWriter A와 또는 FileOutputStream 감싸 OutputStreamWriter)를 사용하는

당신이 당신의 데이터를 문자열로 기록 된 것으로 확인되면. "*Writer"또는 "*Reader"은 모두 텍스트/String을 다룹니다. 바이너리 데이터를 작성하려는 경우이를 피하는 것이 좋습니다.

byte을 제외하고 다른 데이터 유형을 작성하려면 DataOutputStream을 조사해야합니다. 이

+0

아! 늦게 잠깐. 좋은 분! :) – vpram86

+0

흥미로운 점은 : 즉석 압축을 제공하는 java.util.zip. * 클래스를 살펴 보는 것입니다. DataOutputStream 생성자에 전달하여 많은 양의 디스크 IO를 절약 할 수 있습니다. –

1

당신은 당신이 단지 바이트를 기록 할 경우 http://java.sun.com/javase/6/docs/api/java/io/DataOutputStream.html#writeInt%28int%29

+0

여기에 DataOutputStream을 사용할 필요가 없습니다. –

+0

이유를 설명해 주시겠습니까? 어쨌든, 나는 방금 사용 할 수 있다고 말했다. :) – vpram86

+0

바이트를 쓰고 싶다면 OutputStream은 괜찮다. ints/longs/floats/double/...을 직접 작성하려는 경우에만 DataOutputStream을 사용하여 바이트로의 변환을 수행 할 수 있습니다. –

0

가, 다음은 충분합니다 이동 :

import java.io.*; 
... 
OutputStream out = new FileOutputStream("MyFile"); 
try { 
    // Write one byte ... 
    out.write((byte) 42); 
    // Write multiple bytes ... 
    byte[] bytes = ... 
    int nosWritten = out.write(bytes, 0, bytes.length); 

} finally { 
    out.close(); 
} 

예외 처리가

:-) 독자들에게 연습 문제로 남겨
+0

실제로 전체 배열을 쓰고 싶다면 "out.write (bytes)"는 괜찮을 것입니다. 3 인자 버전을 사용할 필요가 없습니다. –

+0

@ Joachim : 알아요. 그것은 하나의 예입니다. –

2
OutputStream os = new FileOutputStream(fileName); 
    String text = "42"; 
    byte value = Byte.parseByte(text); 
    os.write(value); 
    os.close(); 
관련 문제