2010-11-19 4 views
12

내가 가지고있는 질문은 텍스트 파일에서 행을 읽는 과정을 단지 그것을 읽는 대신 배열로 변환하는 것에 관한 것입니다. 수 내 코드에서C# 어떻게 File.ReadLines을 문자열 배열로 변환 하시겠습니까?

오류가 string[] lines = File.ReadLines("c:\\file.txt");에 나타나지 implicity 변환 ....

누군가가 배열 형식으로 결과를 저장하는 코드에 대한 조언을 주시겠습니까? 배열에 결과를 저장할 수있는 ReadAllLines 코드를 배치했습니다. 감사!

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Diagnostics; 
using System.IO; 

namespace Testing 
{ 
class Analysis 
{ 
    static void Main() 
    { 
     string[] lines = File.ReadLines("c:\\file.txt"); 

     foreach (string r in lines) 
     { 
      Console.WriteLine("-- {0}", r); 
     } 

     // Keep the console window open in debug mode. 
     Console.WriteLine("Press any key to exit."); 
     System.Console.ReadKey(); 
    } 
} 
} 

ReadAllLines 코드 :

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Diagnostics; 
using System.IO; 

namespace Testing 
{ 
class ReadFromFile 
{ 
    static void Main() 
    { 
     string[] lines = System.IO.File.ReadAllLines 
     (@"C:\Users\Public\TestFolder\WriteLines2.txt"); 

     System.Console.WriteLine("Contents of writeLines2.txt =:"); 
     foreach (string line in lines) 
     { 
      Console.WriteLine("\t" + line); 
     } 

     // Keep the console window open in debug mode. 
     Console.WriteLine("Press any key to exit."); 
     System.Console.ReadKey(); 
    } 
} 
} 
+4

'ReadAllLines'는 여러분이 원하는 것을 이미하고있는 것처럼 보입니다. 왜 이것에 대해'ReadLines'를 사용하려고합니까? – Gabe

+0

아래 주석을보십시오. 감사. – JavaNoob

답변

26

File.ReadLines()System.Collections.Generic.IEnumerable<String>
File.ReadAllLines() 문자열의 배열을 반환 형식의 개체를 반환합니다.

문자열 배열을 사용하려면 올바른 함수를 호출해야합니다.

짐 솔루션을 사용할 수 있습니다. ReadAllLines()을 사용하거나 반환 유형을 변경할 수 있습니다.

이는 것

작동 :

System.Collections.Generic.IEnumerable<String> lines = File.ReadLines("c:\\file.txt"); 

당신은는 IEnumerable을 구현하는 일반적인 수집을 사용할 수 있습니다. 예를 들어 IList.

+0

ReturnLines은 정의가 아닙니다. 그것이 시스템이 보여주는 것입니다. – JavaNoob

+0

아, 이제 오타가 보입니다. ReadLines가되어야하는 대답을 업데이트했습니다. 당신이 배열을 필요로한다면, ReadAllLines()를 사용하는 것이다. 컬렉션을 사용할 수 있다면 ReadLines()는 대용량 파일에서 더 잘 작동합니다. 필요한 경우 개별 행만 가져 오기 때문입니다. –

+1

예를 들어, ReadLines에서 더 큰 파일을 사용할 수 있도록하는 아이디어가 있습니다. 그래서 위의 코드는 ReadAllLines와 비슷하지 않습니까? – JavaNoob

16
string[] lines = File.ReadLines("c:\\file.txt").ToArray(); 

당신이 원하는거야 왜 하나가 궁금했지만 그 때 ReadAllLines 작품 잘.

가 아니면 그냥 File.ReadLines의 반환 값을 열거 할 :

var lines = File.ReadAllLines("c:\\file.txt"); 
foreach (var line in lines) 
{ 
    Console.WriteLine("\t" + line); 
} 
+0

ReadAllLines 대신 Readlines를 사용하는 이유는 파일 크기 때문입니다. 큰 텍스트 파일의 경우 버퍼 오버플로가 발생할 수 있으므로 권장합니다. – JavaNoob

+4

그러나 ToArray를 호출하면'ReadLines'를 호출 할 때의 이점이 없어집니다. 내가 보여준대로 열거자를 사용하십시오. –

+0

열거자는 ReadLines의 기능을 사용합니까? – JavaNoob

1

변경 string[] lines = File.ReadLines("c:\\file.txt");에서 IEnumerable<string> lines = File.ReadLines("c:\\file.txt"); 나머지 코드는 정상적으로 작동합니다.

관련 문제