2011-01-28 3 views
1

일반적으로 File.ReadAllLines을 사용할 것이라고 알고 있지만 업로드 된 파일로 처리하려고합니다.LINQ로 텍스트 파일 구문 분석

어떻게 든 임시 위치에 넣을 수 있습니까? 아니면 메모리에서 읽을 수 있습니까?

내가 얻을 수있었습니다이 작업

+1

아마도 관련 http://stackoverflow.com/questions/1797576/c-file-upload-read-to-memory-and-use-as-text-file-is-there-a-better-way –

+2

무엇이 있습니까? 파싱의 종류가 필요하며 왜 LINQ에 정착 했습니까? –

답변

4

가 이것을 string하는 Stream, 또는 무엇을? 어느 쪽이든 TextReader이 필요합니다. 질문은 단순히 StringReaderStreamReader입니다. 당신이 것을이 있으면, 나는 같은 것을 할 것 : 어느 독자와 함께 다음

public static IEnumerable<string> ReadLines(TextReader reader) { 
    string line; 
    while((line = reader.ReadLine()) != null) yield return line; 
} 

을 내가 할 수있는 사용자 중 하나

foreach(var line in ReadLines(reader)) { 
    // note: non-buffered - i.e. more memory-efficient 
} 

나 :

string[] lines = ReadLines(reader).ToArray(); 
// note: buffered - all read into memory at once (less memory efficient) 

즉,이 경우 Stream에서 읽고 있습니다 :

using(var reader = new StreamReader(inputStream)) { 
    foreach(var line in ReadLines(reader)) { 
     // do something fun and interesting 
    } 
}