2011-09-26 5 views
0

이진 파일은 텍스트 편집기에서 읽을 수 있음을 알고 있습니다. 프로그램에서만 읽을 수 있습니다. 자바 (바이트)를 사용하여 이진 파일을 만들면 파일을 열어 읽을 수 있습니까? 왜 그런 일이 일어 났습니까? 즉, 0과 1의 순서가 아니라 일반 텍스트가 표시됩니다. 자바에서 바이트 기반 스트림과 문자 기반 스트림이 있다는 것을 알고 있습니다. FileOutputStream과 같은 바이트 기반 스트림을 사용할 때 출력은 바이트가 아닌 문자입니다. 내가 메모장을 사용 MYFILE.DAT을 열 때자바의 이진 파일

File file = new File("Myfile.dat"); // .txt or .bin 
    FileOutputStream fos = new FileOutputStream(file); 
    String data = "Hello, world"; 
    fos.write(data.getBytes()); 
    fos.close(); 

, 나는 특수 문자 나 0과 1을 볼 것으로 예상하지만 내용에 "Hello World"를 읽을 수 있습니다. 따라서 바이트 기반 스트림이 문자를 바이너리 형식으로 저장하는 방법을 훼손하지 않습니까?

+0

귀하의 질문에 대답하기가 너무 모호합니다. http://tinyurl.com/so-hints –

+0

을 읽으십시오. "읽음"이란 무엇을 의미합니까? 평문이나 넌센스 문자가 보이니? –

+7

모든 파일은 "바이너리"입니다. 0과 1이 어떻게 ** 해석되는지에 대한 문제입니다. ** –

답변

6

"바이너리 파일"은 텍스트 편집기에서 읽을 수 없습니다. "텍스트 편집기에서 쓸모없는 문자가 들어있는 바이너리 파일은 의미있는 방식으로 읽거나 편집 할 수 없습니다." 결국, 모든 파일은 바이너리입니다. 단지 파일의 내용에 달려 있습니다.

+0

질문을 편집하고 세부 사항을 추가하면 더보실 수 있습니다. – sahar

1

바이너리 파일은 대부분의 텍스트 편집기에서 열 수도 있습니다. 이진 파일은 이진 값과 편집기가 텍스트 값으로 해석하는 방법에 따라 달라집니다. 메모장이나 간단한 텍스트 편집기에서 Java 프로그램의 결과물을 열 수없는 이유는 없습니다. 횡설수설과 특수 문자 만 보일 것입니다! 내용을 바이너리로보기를 원한다면 hexEdit와 같은 바이너리 파일 편집기/뷰어가 필요합니다.

+0

질문을 편집하고 자세한 내용을 추가하면 모양을 취할 수 있습니다. – sahar

1

"바이너리 파일"이란 정확히 무엇을 의미합니까? 파일을 "바이너리 파일"또는 "텍스트 파일"로 표시하는 마술 태그는 없습니다 (적어도 요즘에는 일반적으로 사용되는 OS가 아닙니다).

파일은 이름과 일부 메타 데이터 (생성 날짜, 사용 권한, ...)가 첨부 된 바이트 스트림입니다.

콘텐츠가 텍스트 또는 바이트로 해석 될 수 있는지 여부는 콘텐츠에 전적으로 달려 있습니다.

따라서 128 미만의 이진 값을 사용하여 파일을 작성한 경우 (일부 낮은 값은 피하십시오) 결과는 유효한 ASCII이며 텍스트 편집기에서 열 때 텍스트 파일처럼 보일 수 있습니다.

그러나 임의의 바이트를 파일에 쓰면 텍스트 편집기로 열면 정상 출력이되지 않습니다.

+0

질문을 편집하고 자세한 내용을 추가하면 보기. – sahar