2013-11-14 2 views
-2

메모장에서 파일을 열었으며 첨부 된 이미지처럼 보입니다. 이 기호는 무엇을 나타 냅니까? Hex/Ascii/Binary? 별도의 파일을 읽고 쓰고 싶습니다. 나는 StreamReader와 StreamWriter를 사용하고 글자 단위로 글자를 읽었지 만 결과 파일은 입력 파일과 다른 심볼을 가지고있다.C에서 파일 형식을 해석하고 읽는 중 #

파일 크기가 크기 때문에 스트림을 사용하고 싶습니다. enter image description here

+2

입력 파일은 무엇입니까? 텍스트 파일이 아니거나 읽는 인코딩에 포함되어 있지 않은 경우이 쓰레기가 실제로 결과가됩니다. –

답변

0

이것은 이진 데이터이므로 아무 의미도 있습니다. 알지 못한다면 이것은 일련의 바이트 일 뿐이며 바이트는 8 비트 숫자입니다. 은 16 진수 또는 펀치 카드와 같은 문자 (모든 인코딩 수)로으로 표시 될 수 있습니다.

이진 데이터를 읽거나 쓰려면 FileStream이 당신의 친구입니다. StreamReader/Writer는 문자 지향적입니다. ASCII 인코딩 만있는 좋은 옛날에는 문자가 바이트와 같았지만 더 이상 그렇지 않습니다. http://www.joelonsoftware.com/articles/Unicode.html

2

정확한 바이너리 데이터를 복사할지 여부를 묻지 않고 텍스트인지 여부를 확인하려면 Stream을 사용해야합니다. 예를 들면 :

using (var input = Stream.OpenRead(inputFile)) 
using (var output = Stream.OpenWrite(outputFile)) 
{ 
    input.CopyTo(output); 
} 

당신은 StreamWriter를 사용하는 경우, 특정 인코딩으로 텍스트로 데이터를 데이터를 해석하고 - 그리고 그것은 텍스트 아니다, 또는 그 인코딩에없는 경우에, 당신은 될 겁니다 기본적으로 쓰레기와 함께.

관련 문제