파일이 있고 문자열에 '42'를 쓰고 싶습니다. 예를 들어 16 진수의 2a입니다. , 어떻게해야합니까? outfile.write (42) 또는 outfile.write (2a) 같은 것을 사용할 수 있고 파일에 문자열을 쓰지 않을 수 있기를 원합니다.(Java) 문자열이 아닌 파일에 십진수/16 진수를 쓰십시오.
당신은을 사용하는 것이 좋습니다 바이너리 데이터를 작성하기위한
파일이 있고 문자열에 '42'를 쓰고 싶습니다. 예를 들어 16 진수의 2a입니다. , 어떻게해야합니까? outfile.write (42) 또는 outfile.write (2a) 같은 것을 사용할 수 있고 파일에 문자열을 쓰지 않을 수 있기를 원합니다.(Java) 문자열이 아닌 파일에 십진수/16 진수를 쓰십시오.
당신은을 사용하는 것이 좋습니다 바이너리 데이터를 작성하기위한
(내가 올바른 검색어를 모르는 아마 때문에,이 간단한 질문입니다하지만 구글의 대답을 찾을 수 없습니다 실현) OutputStream
(예 : FileOutputStream
) 당신은 아마 Writer
(예 : FileWriter
A와 또는 FileOutputStream
감싸 OutputStreamWriter
)를 사용하는
당신이 당신의 데이터를 문자열로 기록 된 것으로 확인되면. "*Writer
"또는 "*Reader
"은 모두 텍스트/String
을 다룹니다. 바이너리 데이터를 작성하려는 경우이를 피하는 것이 좋습니다.
byte
을 제외하고 다른 데이터 유형을 작성하려면 DataOutputStream
을 조사해야합니다. 이
당신은 당신이 단지 바이트를 기록 할 경우 http://java.sun.com/javase/6/docs/api/java/io/DataOutputStream.html#writeInt%28int%29
여기에 DataOutputStream을 사용할 필요가 없습니다. –
이유를 설명해 주시겠습니까? 어쨌든, 나는 방금 사용 할 수 있다고 말했다. :) – vpram86
바이트를 쓰고 싶다면 OutputStream은 괜찮다. ints/longs/floats/double/...을 직접 작성하려는 경우에만 DataOutputStream을 사용하여 바이트로의 변환을 수행 할 수 있습니다. –
가, 다음은 충분합니다 이동 :
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();
}
예외 처리가
:-) 독자들에게 연습 문제로 남겨실제로 전체 배열을 쓰고 싶다면 "out.write (bytes)"는 괜찮을 것입니다. 3 인자 버전을 사용할 필요가 없습니다. –
@ Joachim : 알아요. 그것은 하나의 예입니다. –
OutputStream os = new FileOutputStream(fileName);
String text = "42";
byte value = Byte.parseByte(text);
os.write(value);
os.close();
아! 늦게 잠깐. 좋은 분! :) – vpram86
흥미로운 점은 : 즉석 압축을 제공하는 java.util.zip. * 클래스를 살펴 보는 것입니다. DataOutputStream 생성자에 전달하여 많은 양의 디스크 IO를 절약 할 수 있습니다. –