상세 컨텐츠

본문 제목

StreamReader & StreamWrite 클래스

C#

by 탑~! 2013. 5. 25. 11:03

본문

발췌...(inside C#_2E, 무료기술 서적)

FileStream은 바이너리 데이터를 읽거나 쓸 수 있다. 문자 데이터로 작업하려면 StreamReader와 StreamWrite와 같은 클래스가 더 적합하다. 이러한 클래스는 백그라운드에서 FileStream 객체를 사용하여 원본 바이트 처리 과정의 최상위 계층인 문자 삽입 계층에 효과적으로 작동할 것이다. StreamReader/StreamWriter를 닫는 것은 백그라운드에 깔려 있는 FileStream 또한 닫는다는 것을 의미한다.

FileStream s =
    new FileStream("Bar.txt", FileMode.Create);
StreamWriter w = new StreamWriter(s);
w.Write("Hello World");
w.Close();

s = new FileStream("Bar.txt", FileMode.Open);
StreamReader r = new StreamReader(s);
string t;
while ((t = r.ReadLine()) != null)
{
    Console.WriteLine(t);
}
w.Close()

결과 : Hello World

StreamReader 클래스와 StreamWriter 클래스는 Encoding을 사용하여 문자를 바이트로 혹은 그 반대로 변환할 수 있다. 몇몇 엔코딩을 이용하여 데이터를 파일에 기록하려면 다음과 같이 StreamWriter와 Encoding 파라미터를 추가한 StreamReader를 생성해야 한다.

//StreamWriter w = new StreamWriter(s);
StreamWriter w = new StreamWriter(s, System.Text.Encoding.BigEndianUnicode);

[참고]
읽기 전용으로 설정된 파일을 열려면 FileStream 생성자에 파일을 읽기만 하도록 지정하기 위해 몇가지의 파라미터를 더 추가할 수 있다.

s = new FileStream(
   "../../TextFile1.txt",
   FileMode.Open, FileAccess.Read);

[참고]
C#에서 파일 경로를 지정할 때 C#에서의 경로는 C나 C++와 동일하게 백슬래시(\)를 사용하기 때문에, 다음과 같은 3가지 방법 중 선택해서 사용할 수 있다.

s = new FileStream(
   "C:\\temp\\goo.txt", FileMode.Create);
or.
s = new FileStream(
   "C:/temp/goo.txt, FileMode.Create);
or.
s = new FileStream(
   @"C:\temp\goo.txt", FileMode.Create);



출처 : http://www.iamgsi.com/category/C%23?page=4

관련글 더보기