Thursday, November 27, 2008

C# 에서 파일 읽기

C# 에서 파일 읽으려고 할 때는, 아주 다양한 방법을 사용할 수 있다.

File 클래스를 사용할 때도,
Open, OpenRead, ReadAllBytes, ReadAllLines, ReadAllText...

FileStrea 클래스를 사용할 때도,
Read, ReadByte...

이렇게 다양한 방법으로 읽어올 수 있는데,



// Open the stream and read it back.
using (FileStream fs = File.OpenRead(path))
{
byte[] b = new byte[1024];
UTF8Encoding temp = new UTF8Encoding(true);

while (fs.Read(b,0,b.Length) > 0)
{
Console.WriteLine(temp.GetString(b));
}
}

저 링크에 있는 예제처럼은 사용하지 말아야 한다.

이유는 잘 모르겠지만 (내가 잘못한 것일 수 있음. 사실 이 확률이 젤 높음 -0-)
파일을 끝까지 못 읽는 문제가 발생한다.
왠지는 모르겠다고 -_-;;;

그냥 File.ReadAllBytes 로 읽어들이거나,
FileStream 의 ReadBytes 를 사용하는 것이 좋을 듯 하다.



using (FileStream fsSource = new FileStream(pathSource,
FileMode.Open, FileAccess.Read))
{

// Read the source file into a byte array.
byte[] bytes = new byte[fsSource.Length];
int numBytesToRead = (int)fsSource.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to numBytesToRead.
int n = fsSource.Read(bytes, numBytesRead, numBytesToRead);

// Break when the end of the file is reached.
if (n == 0)
break;

numBytesRead += n;
numBytesToRead -= n;
}
}

이 링크에 있는 예제는 문제 없이 잘 동작한다.

No comments:

Post a Comment