회원 로그인
|
스트림 (stream) - 문자, 바이너리 읽기/쓰기
스트림
파일 데이터의 입출력
파일의 종류
파일에는 텍스트 파일과 바이너리 파일 크게 나눈다.
두가지의 차이점은 '사람'이 읽을 수 있느냐 없느냐다. 텍스트 파일은 문자들로 텍스트 에디터로 읽일 수 있으며, 바이너리는 읽을 수가 없다.
텍스트 파일은 C# 소스, html, 텍스트 파일들
바이너리 파일은 exe 실행 파일, 그림 파일, 사운드 파일 등이 있다.
스트림
파일을 읽기, 쓰기에 대한 데이터의 흐름을 스트림이라 한다. 읽기 쓰기에 스트림 전용 클래스에서 생성한 객체를 사용한다.
스트림은 취급하는 데이터에 따라 문자 스트림, 바이트 스트림으로 나눈다.
문자 스트림 : Unicode 문자의 데이터를 취급하며, 입출력할 때 OS의 사양이나 설정에 기초하여 문자나 줄바꿈 코드가 변환된다.
바이트 스트림 : 바이너리 데이터를 취급하며 입출력할 때 변환이 수행되지 않는다.
스트림 선언
System.IO 네임스페이스에 데이터를 읽고 쓸 수 있는 메소드가 있다.
문자 읽고 쓰기
문자 파일을 읽고 쓰기를 해보자.
문자 읽기
텍스트 데이터 파일을 읽는 방법. UTF-8 형식의 파일 file.txt로 만들고 읽어보도록 해보자.
Text.txt 파일에 내용을 넣고, 코드와 같은 경로의 UTF-8 형식으로 저장
Text.txt안의 내용을 한줄씩 출력
문자 쓰기
텍스트 데이터 파일을 쓰는 방법. file.txt 파일에 쓰도록 해보자.
Text.txt 파일을 생성하고 내요을 넣는다.(쓴다)
'파일을 만들었다'의 내용이 담긴 Text.txt 파일을 생성
바이너리 읽고 쓰기
바이너리 파일을 읽고 쓰기를 해보자.
바이너리 읽기
바이너리 쓰기
참고) C#이 보이는 그림책
파일 데이터의 입출력
파일의 종류
파일에는 텍스트 파일과 바이너리 파일 크게 나눈다.
두가지의 차이점은 '사람'이 읽을 수 있느냐 없느냐다. 텍스트 파일은 문자들로 텍스트 에디터로 읽일 수 있으며, 바이너리는 읽을 수가 없다.
텍스트 파일은 C# 소스, html, 텍스트 파일들
바이너리 파일은 exe 실행 파일, 그림 파일, 사운드 파일 등이 있다.
스트림
파일을 읽기, 쓰기에 대한 데이터의 흐름을 스트림이라 한다. 읽기 쓰기에 스트림 전용 클래스에서 생성한 객체를 사용한다.
스트림은 취급하는 데이터에 따라 문자 스트림, 바이트 스트림으로 나눈다.
문자 스트림 : Unicode 문자의 데이터를 취급하며, 입출력할 때 OS의 사양이나 설정에 기초하여 문자나 줄바꿈 코드가 변환된다.
바이트 스트림 : 바이너리 데이터를 취급하며 입출력할 때 변환이 수행되지 않는다.
스트림 선언
System.IO 네임스페이스에 데이터를 읽고 쓸 수 있는 메소드가 있다.
// 네임스페이스 선언 using System.IO;
읽기/쓰기 모드
처리 | 의미 |
FileMode.Open | 기존의 파일을 연다. |
FileMode.OpenOrCreate | 파일이 없으면 만든 후에 연다. |
FileMode.Append | 추가 기록 모드로 연다. 파일이 없으면 만든다. |
FileMode.Create | 파일을 만든다. 같은 이름의 파일이 있으면 이전 파일을 지운다. |
FileMode.CreateNew | 파일을 만든다. 같은 이름의 파일이 있으면 예외가 발생한다. |
문자 읽고 쓰기
문자 파일을 읽고 쓰기를 해보자.
문자 읽기
텍스트 데이터 파일을 읽는 방법. UTF-8 형식의 파일 file.txt로 만들고 읽어보도록 해보자.
// 1. 파일을 연다. // FileStream 클래스를 사용하여 스트림을 만들고, StreamReader 읽기용 클래스에 전달한다. // FileMode.Open 열기 모드: 파일을 여는 방법을 지정 FileStream fs = new FileStream("file.txt", FileMode.Open); StreamReader r = new StreamReader(fs); // 2. 데이터를 읽는다. // StreamReader 클래스의 ReadLine() 메소드를 사용 string s = r.ReadLine(); // s : 읽은 문자열을 저장하는 변수 // ReadLine() : 한 행의 문자열을 읽어 반환한다. // 읽어 들이지 못할 때는 null을 반환한다. // 3. 파일을 닫는다. // StreamReader 클래스의 Close() 메소드를 사용 r.Close();
Text.txt 파일에 내용을 넣고, 코드와 같은 경로의 UTF-8 형식으로 저장
// 예제 using System; using System.IO; class ReadText { static void Main() { FileStream fs; try // 예외처리 { fs = new FileStream("Text.txt", FileMode.Open); // 파일 읽기 모드 } catch(IOException) { Console.WriteLine("파일을 열 수 없다."); // 파일이 없으면 출력 return; } StreamReader r = new StreamReader(fs); // 파일 열기 string s; // 파일 읽기 int i = 1; while ((s = r.ReadLine()) != null) { Console.WriteLine(i + ":" + s); // 한줄씩 출력 i++; } r.Close(); // 파일 닫기 } }결과
Text.txt안의 내용을 한줄씩 출력
문자 쓰기
텍스트 데이터 파일을 쓰는 방법. file.txt 파일에 쓰도록 해보자.
// 1. 파일을 연다. // FileStream 클래스를 사용하여 스트림을 만들고 StreamWriter 쓰기용 클래스에 전달한다. // FileMode.Create : 새로 파일을 만든다. FileStream fs = new FileStream("File.txt", FileMode.Create); StreamWriter w = new StreamWriter(fs); // 2. 데이터를 쓴다. // Write() 메소드, 인수로 전달된 데이터를 파일에 넣는다.(UTF-8 형식으로 넣는다.) w.Write("헬로 월드"); // 3. 파일을 닫는다. w.Close();
Text.txt 파일을 생성하고 내요을 넣는다.(쓴다)
// 예제 using System; using System.IO; class WriteText { static void Main() { FileStream fs; try // 예외처리 { fs = new FileStream("Text.txt", FileMode.Create); // 파일 쓰기 모드 } catch(IOException) { Console.WriteLine("파일을 열 수 없다."); // 파일이 없으면 출력 return; } StreamWriter w = new StreamWriter(fs); // 파일 열기 w.Write("파일을 만들었다."); // 파일 쓰기 w.Close(); // 파일 닫기 } }결과
'파일을 만들었다'의 내용이 담긴 Text.txt 파일을 생성
바이너리 읽고 쓰기
바이너리 파일을 읽고 쓰기를 해보자.
바이너리 읽기
// 1. 파일을 연다 // FileStream 클래스를 사용하여 스트림을 만들고 BinaryReader 바이너리 읽기용 클래스에 전달한다. FileStream fs = new FileStream("file.dat", FileMode.Open); BinaryReader r = new BinaryReader(fs); // 2. 데이터를 읽는다. // BinaryReader 클래스의 Read() 메소드를 사용한다. // n : 읽어 들인 바이트 수을 담을 변수 // Read() : 배열에 데이터를 읽어 드린다. // buf : 데이터를 받은 byte형의 배열 // 0 : 읽어 들이기 시작 위치 // 3 : 읽어 들이는 바이트 수 int n = r.Read(buf, 0, 3); // 3. 파일을 닫는다. r.Close();
바이너리 쓰기
// 1. 파일을 열기 // FileStream 클래스를 사용하여 스트림을 만들고 BinaryWriter 바이너리 쓰기용 클래스에 전달한다. FileStream fs = new FileStream("File.dat", FileMode.Create); BinaryWriter w = new BinaryWriter(fs); // 2. 데이터를 쓴다. int n = w.Write(buf, 0, 3); // 3. 파일을 닫는다. w.Close();
참고) C#이 보이는 그림책
댓글 0개
| 엮인글 0개
285개(6/15페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
185 | [PHP] 회원가입 + 로그인 스크립트 (with Unity) [2+1] | 푸딩뱃살 | 12240 | 2015.12.06 17:31 |
184 | [C#] C# 추천 서적 | 푸딩뱃살 | 1320 | 2015.12.06 17:16 |
183 | [C/C++] C++ 참고 사이트 | 푸딩뱃살 | 1181 | 2015.12.04 16:13 |
182 | [PHP] 클래스 | 푸딩뱃살 | 3580 | 2015.12.04 14:40 |
181 | [PHP] CodeIgniter(코드이그나이트) | 푸딩뱃살 | 2931 | 2015.12.04 14:40 |
180 | [C#] Delegate (델리게이트) (with Unity) | 푸딩뱃살 | 6266 | 2015.12.01 10:44 |
179 | [PHP] php 함수 | 푸딩뱃살 | 2218 | 2015.11.30 15:33 |
178 | [PHP] Dictionary (딕셔너리) | 푸딩뱃살 | 2868 | 2015.11.27 12:37 |
177 | [PHP] 배열 | 푸딩뱃살 | 2170 | 2015.11.27 12:37 |
176 | [PHP] 변수 선언 / 산술 연산 | 푸딩뱃살 | 2182 | 2015.11.27 11:14 |
175 | [C#] Dictionary (딕셔너리) (with Unity) [3+3] | 푸딩뱃살 | 14483 | 2015.11.25 10:29 |
174 | [C#] List (리스트) (with Unity) | 푸딩뱃살 | 12087 | 2015.11.24 10:22 |
173 | [C#] Generic (제네릭) (with Unity) | 푸딩뱃살 | 4888 | 2015.11.22 12:32 |
172 | [C/C++] Templete (템플릿) | 푸딩뱃살 | 2045 | 2015.11.22 12:15 |
171 | [C#] 키보드 입력 | 푸딩뱃살 | 3568 | 2015.11.21 18:00 |
170 | [C#] 예외와 예외 처리 | 푸딩뱃살 | 4122 | 2015.11.21 17:39 |
169 | [C#] Struct (구조체) (with Unity) | 푸딩뱃살 | 5122 | 2015.11.18 22:08 |
168 | [C#] Property (프로퍼티) (with Unity) | 푸딩뱃살 | 2443 | 2015.11.18 10:50 |
167 | [C#] interface (인터페이스) (with Unity) | 푸딩뱃살 | 3306 | 2015.11.15 17:32 |
>> | [C#] 스트림 (stream) - 문자, 바이너리 읽기/쓰기 | 푸딩뱃살 | 12780 | 2015.11.14 18:24 |