프로젝트/Color Lim 개발일지

BinaryReader와 StreamReader 클래스의 차이

개념있는식빵 2023. 1. 18. 17:07

Unity로 Save Load 시스템을 구현하다가

파일을 읽고 쓰는 클래스들에 대해 알아보게되면서 작성하게 되었다

 

사실 클래스명 그대로인데

BinaryReader

이진 데이터를 읽을 때 사용한다

StreamReader

텍스트 데이터를 읽을 때 사용한다

 

좀 더 얘기를 해보자면

컴퓨터 파일은 '바이너리 파일'과 '이진 파일'로 나뉜다

 

바이너리 파일

0과 1로 이루어진 데이터로 구성된 파일 (프로그램, 컴퓨터가 읽어서 사용하는 파일)

.jpg, .png, .mp3, .exe, 워드, 한글 등이 바이너리 파일에 해당한다

사용자 또는 프로그램이 사용하던 정보나 숫자 값을 특별한 가공 없이 그대로 저장한다

 

데이터를 읽고 쓸때 파일 형식에 조건이 없기 때문에 대부분 데이터의 크기로 판단한다

따라서 '한 줄의 데이터를 읽어라', '파일의 끝까지 읽어라' 같은 명령이 아닌

'10 바이트를 읽어라', '30 바이트를 읽어라' 와 같은 명령을 사용한다

 

위 특징 때문에 파일을 확인하려면 파일을 볼 수 있는 별도의 프로그램이 필요하다

Ex) PNG 같은 이미지를 이미지 전용 프로그램이 아닌

      메모장 같은 것에서 열면 알 수 없는 문자들이 나열되는 현상 등이 발생한다

 

 

텍스트 파일

문자를 기반으로 하는 코드 값이 저장된 파일

(물론 결국 얘네도 0과 1이라는 2진수 데이터만으로 이루어진 바이너리 파일이라고 할 수 있다. 가공되어 사용될 뿐)

 

텍스트 파일은 문자 기반으로 되어있기 때문에

문자열을 확인할 수 있는 프로그램이나 명령을 사용하면 파일 내용을 확인할 수 있다

 

 

바이너리 파일 vs 텍스트 파일

텍스트 파일은 결국 2진 데이터를 문자열로 변환하는 과정을 거쳐야 하기에

비효율적이며 저장 공간도 더 많이 차지하게 된다

그럼에도 텍스트 파일을 사용하는 이유는 전용 프로그램이 없더라도 파일 내용을 확인할 수 있는 범용성 때문이다