[C#기초] 2. 파일 입출력
INDEX
파일입출력
파일 입출력 정리
입출력 단위 | 클래스 | 사용빈도 |
---|---|---|
바이트 | File, FileStream + BitConverter | ★ |
텍스트 | StreamWriter, StreamReader + FileStream | ★★★ |
이진 | BinaryWriter, Binary Reader + FileStream | ★★★★★ |
구조체와 클래스 | [Serializable] + BinaryFormatter [Serializable] + 컬렉션 + BinaryFormatter | ★★★★★ |
파일스트림
-
파일생성
FileStream fs = new FileStream("test.txt",FileMode.Create); StreamWriter sw = new StreamWriter(fs); sw.Close();
-
using문
-
.Close()
부분을 자동으로 처리하기 위함
-
using(StreamWriter sw = new StreamWriter(new FileStream("test.txt",FileMode.Create)) { //파일 입출력 처리 }
파일 쓰기 예제
-
Write()
,WriteLine()
int value = 12; float value2 = 3.14f; string str1 = "Hello World"; FileStream fs = new FileStream("test.txt",FileMode.Create); StreamWriter sw = new StreamWriter(fs); sw.Write(value); sw.WriteLine(value2); sw.Write(str1); sw.Close();
-
using 문을 사용한 코드
-
int value = 12; float value2 = 3.14f; string str1 = "Hello World"; using(StreamWriter sw = new StreamWriter(new FileStream("test.txt",FileMode.Create)) { sw.WriteLine(value); sw.WriteLine(value2); sw.WriteLine(str1); }
-
StreamWriter만 사용한 코드
-
int value = 12; float value2 = 3.14f; string str1 = "Hello World"; StreamWriter sw = new StreamWriter("test.txt"); //쓰기 용도로만 사용 가능 sw.Write(value); sw.WriteLine(value2); sw.Write(str1); sw.Close();
파일 읽기 예제
-
FileStream과 StreamReader를 같이 사용하는 코드
-
FileStream fs = new FileStream("test.txt",FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(fs); int value = int.Parse(sr.ReadLine()); int float value2 = float.Parse(sr.ReadLine()); string str1 = sr.ReadLine(); sr.Close();
-
StreamReader와 using문을 사용하는 코드
-
using (StreamReader sr = new StreamReader( new FileStream("test.txt",FileMode.Open))) { int value = int.Parse(sr.ReadLine()); int float value2 = float.Parse(sr.ReadLine()); string str1 = sr.ReadLine(); }
-
StreamReader만을 사용한 코드
-
StreamReader sr = new StreamReader("test.txt"); //읽기만 가능 int vlaue = int.Parse(sr.ReadLine()); float value2 = float.Parse(sr.ReadLine()); string str1 = sr.ReadLien();
이진파일 읽기 쓰기
-
네트워크에서도 사용 가능
-
BinaryWriter
/BinaryReader
-
이진 파일 쓰기
-
-
Write()
사용 -
이진 파일 쓰기 예시 코드
-
using (BinaryWriter bw = new BinaryWriter(new FileStream("test.dat", FileMode.Create))) { bw.Write(12); bw.Write(3.14f); bw.Write("Hello World!"); }
-
-
이진 파일 읽기
-
BinaryReader(Stream)
BinaryReader(Stream,Encoding)
BinaryReader(Stream,Encoding,Boolean)
-
이진 파일 읽기 예시 코드
-
int var1; float var2; string str1; using (BinaryReader br = new BinaryReader(File.Open("test.dat", FileMode.Open))) { var1 = br.ReadInt32(); var2 = br.ReadSingle(); str1 = br.ReadString(); }
-
구조체를 이진 파일로 읽기 쓰기 예시 코드
-
namespace ConsoleApp1 { class Program { struct Data { public int var1; public float var2; } static void Main(string[] args) { Data[] DataArray = new Data[2]; DataArray[0].var1 = 7; DataArray[0].var2 = 3.14f; DataArray[1].var1 = 12; DataArray[1].var2 = 0.5f; using (BinaryWriter bw = new BinaryWriter(File.Open("test.txt", FileMode.Create))) { for (int i = 0; i < DataArray.Length; i++) { bw.Write(DataArray[i].var1); bw.Write(DataArray[i].var2); } } int var1; float var2; BinaryReader br = new BinaryReader(File.Open("test.txt", FileMode.Open)); while(true) { try { var1 = br.ReadInt32(); var2 = br.ReadSingle(); Console.WriteLine("{0} {1}", var1, var2); } catch(EndOfStreamException e) { br.Close(); break; } } } } }
-
결과