2009-11-25 5 views
0

내 응용 프로그램의 루트 디렉토리에있는 파일을 읽으려면 다음 코드를 사용하십시오. 웬일인지, 얼마나 많은 달리기라도 나의 파일은 아직도 읽히지 않고있다. 내가 여기서 무엇을 잘못 할 수 있는지 생각해보십시오. 미리 감사드립니다.독자가 내 텍스트 파일을 읽지 못하는 이유를 모르겠 음

byte[] mybytes = null; 
if (File.Exists(filename)) 
{ 
    using (StreamReader sr = new StreamReader(new FileStream(filename, 
           FileMode.Open, FileAccess.Read, FileShare.Read))) 
    { 
     String input; 
     StringBuilder tempstore = new StringBuilder(); 
     while ((input = sr.ReadLine()) != null) 
     { 
      tempstore.Append(input); 
     } 
     mybytes = Encoding.ASCII.GetBytes(tempstore.ToString()); 
     sr.Close(); 
    } 
} 
+1

은 드라이브의 해당 루트 디렉토리 일 수 있습니다. – YOU

+2

코드를 단계별로 실행 해 보셨습니까? –

+0

if (File.Exists (filename)) – Simon

답변

1

File.ReadAllBytes를 사용해 보셨나요?

 byte[] mybytes = File.ReadAllBytes(filename); 
+0

처음에는 파일을 가지고 있었고 (File.ReadAllBytes (filename)) 작동하지 않았습니다. 그래서 나는 내가 가진 것과 아직 아무것도 가지고 있지 않은 것으로 바꾸었다. – Kobojunkie

+1

음 ... ReadAllBytes는 잘 작동합니다 ... – Nestor

1

시도해보십시오 File.ReadAllText (filename); ?

쉽습니다.

+0

위의 내용을 결정하기 전에 먼저 시도해 보았습니다. – Kobojunkie

0

ReadLine은 텍스트 파일에만 사용해야합니다. 파일이 바이너리라면 시작 부분에^Z 문자가있을 수 있습니다. 라이브러리가 EOF에 도달했다고 생각하게 만듭니다.

+0

좋은 점, 그가 궁극적으로'byte []'에 넣을 때이 경우 일 수있다. – TheVillageIdiot

+0

파일 이름은 실제로는 을 가리킨다. 문자열 파일 이름 = @ "outfile.txt"; – Kobojunkie

+0

그건 중요하지 않습니다. 확장자가 .txt 인 이진 파일 일 수 있습니다. 메모장 – Nestor

0

코드를 그대로 복사하면 코드가 작동하고 직접 변수 filename을 추가하고 실행하십시오. filename 값이 컴퓨터의 유효한 파일 경로가 아닐 수 있습니까?

+0

로를 열어보십시오하지만 그는'File.Exists (파일 이름)을 확인하는 중입니다 ' – TheVillageIdiot

+0

이 전달 경우 파일이 존재 않음을 나타내는 (File.Exists (파일 이름)) { ... } 검사, ... while ((input = sr.ReadLine())! = null) { null을 읽고 내 루프에서 즉시 벗어납니다. – Kobojunkie

0

실제로 filename이 실제로 존재합니까? 그것은 정말로 당신이 열거 한 코드에 기초하여 문제가 될 가능성이 가장 높은 것입니다.

관련 문제