본문 바로가기

CSharp/Development

FileInfo를 이용한 FileStream, StreamWrite, StreamReader 이용

FileInfo 를 이용해서 파일을 잡고
파일을 읽고, 쓰는 방법에 대해서 알아 보도록 하겠습니다.

System.IO.FileInfo fi = new System.IO.FileInfo(@"C:\test.txt");

// 파일이 없다면 생성
if (!fi.Exists) fi.Create();

// OpenRead 파일을 읽을 때
// OpenWrite 파일을 생성해서 바로 쓸때(이전 데이타가 없다고 가정하고 쓰는 경우) 이전 데이타가 있으면 그 내용은 그대로 존재
// Open(System.IO.FileMode.Create) FileStream 형태를 직접 제어 하는 경우 아래와 같은 경우에는 무조건 새로 쓰는 경우
//using (System.IO.FileStream fs = fi.OpenRead())
//using (System.IO.FileStream fs = fi.OpenWrite())
using (System.IO.FileStream fs = fi.Open(System.IO.FileMode.Create))
{
	// System.StreamWriter를 이용하지 않고 직접 FileStream을 이용해서 쓰는 방법
	//Byte[] info = new UTF8Encoding(true).GetBytes("1234567890");
	//fs.Write(info, 0, info.Length);
	
	// 쓰는 위치를 선택한다. Begin(시작), End(마지막)
	//fs.Seek(0, System.IO.SeekOrigin.End);
	//fs.Seek(0, System.IO.SeekOrigin.Begin);

	// 파일 읽기
	//using (System.IO.StreamReader sr = new System.IO.StreamReader(fs))
	//{
	//    string strTempText = sr.ReadToEnd();
	//    sr.Close();
	//}

	// 파일 쓰기
	using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fs))
	{
		sw.Write("1234567890");
		sw.Close();
	}
	fs.Close();
}

// 작성 된 파일 실행
using (System.Diagnostics.Process ps = new System.Diagnostics.Process())
{
	ps.StartInfo.FileName = @"C:\test.txt";
	ps.Start();
	ps.Close();
}

우선 코드는 위와 같습니다.

저는 FileInfo 에서 FileStream으로 넘겨 줄때 File의 Mode 설정 때문에 좀 고생을 했었는데요.
알고 보면 매우 간단합니다.

위 코드에 자세한 내용은 아래(MSDN)를 참고 하시기 바랍니다.

FileInfo Class (System.IO) http://msdn.microsoft.com/ko-kr/library/system.io.fileinfo.aspx
FileStream Class (System.IO) http://msdn.microsoft.com/ko-kr/library/system.io.filestream%28VS.80%29.aspx
StreamReader Class (System.IO) http://msdn.microsoft.com/ko-kr/library/system.io.streamreader%28VS.80%29.aspx
StreamWriter Class (System.IO) http://msdn.microsoft.com/ko-kr/library/system.io.streamwriter%28VS.80%29.aspx

이상입니다.