File.ReadLines 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
파일의 줄을 읽습니다.
오버로드
ReadLines(String, Encoding) |
지정된 인코딩이 있는 파일의 줄을 읽습니다. |
ReadLines(String) |
파일의 줄을 읽습니다. |
ReadLines(String, Encoding)
- Source:
- File.cs
- Source:
- File.cs
- Source:
- File.cs
지정된 인코딩이 있는 파일의 줄을 읽습니다.
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ ReadLines(System::String ^ path, System::Text::Encoding ^ encoding);
public static System.Collections.Generic.IEnumerable<string> ReadLines (string path, System.Text.Encoding encoding);
static member ReadLines : string * System.Text.Encoding -> seq<string>
Public Shared Function ReadLines (path As String, encoding As Encoding) As IEnumerable(Of String)
매개 변수
- path
- String
읽을 파일입니다.
- encoding
- Encoding
파일 내용에 적용되는 인코딩입니다.
반환
파일의 모든 줄 또는 쿼리의 결과인 줄입니다.
예외
.NET Framework 및 .NET Core 버전이 2.1보다 오래된 경우: path
길이가 0인 문자열이거나, 공백만 포함하거나, GetInvalidPathChars() 메서드에 정의된 하나 이상의 잘못된 문자를 포함합니다.
path
null
.
path
잘못되었습니다(예: 매핑되지 않은 드라이브에 있는 경우).
path
지정한 파일을 찾을 수 없습니다.
파일을 여는 동안 I/O 오류가 발생했습니다.
path
시스템 정의 최대 길이를 초과합니다.
호출자에게 필요한 권한이 없습니다.
path
읽기 전용인 파일을 지정합니다.
-또는-
이 작업은 현재 플랫폼에서 지원되지 않습니다.
-또는-
path
디렉터리입니다.
-또는-
호출자에게 필요한 권한이 없습니다.
설명
이 메서드를 사용하여 파일 읽기를 사용할 인코딩을 지정합니다.
ReadLines 및 ReadAllLines 메서드는 다음과 같이 다릅니다. ReadLines사용하면 전체 컬렉션이 반환되기 전에 문자열 컬렉션을 열거할 수 있습니다. ReadAllLines사용하는 경우 배열에 액세스하기 전에 전체 문자열 배열이 반환될 때까지 기다려야 합니다. 따라서 매우 큰 파일로 작업하는 경우 ReadLines 더 효율적일 수 있습니다.
ReadLines 메서드를 사용하여 다음을 수행할 수 있습니다.
파일에 대한 LINQ to Objects 쿼리를 수행하여 필터링된 줄 집합을 가져옵니다.
반환된 줄 컬렉션을 File.WriteAllLines(String, IEnumerable<String>, Encoding) 메서드를 사용하여 파일에 쓰거나 File.AppendAllLines(String, IEnumerable<String>, Encoding) 메서드를 사용하여 기존 파일에 추가합니다.
IList<T> 또는 Queue<T>같은 생성자에 대한 문자열의 IEnumerable<T> 컬렉션을 사용하는 컬렉션의 즉시 채워진 인스턴스를 만듭니다.
적용 대상
ReadLines(String)
- Source:
- File.cs
- Source:
- File.cs
- Source:
- File.cs
파일의 줄을 읽습니다.
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ ReadLines(System::String ^ path);
public static System.Collections.Generic.IEnumerable<string> ReadLines (string path);
static member ReadLines : string -> seq<string>
Public Shared Function ReadLines (path As String) As IEnumerable(Of String)
매개 변수
- path
- String
읽을 파일입니다.
반환
파일의 모든 줄 또는 쿼리의 결과인 줄입니다.
예외
.NET Framework 및 .NET Core 버전이 2.1보다 오래된 경우: path
길이가 0인 문자열이거나, 공백만 포함하거나, GetInvalidPathChars() 메서드에서 정의한 하나 이상의 잘못된 문자를 포함합니다.
path
null
.
path
잘못되었습니다(예: 매핑되지 않은 드라이브에 있는 경우).
path
지정한 파일을 찾을 수 없습니다.
파일을 여는 동안 I/O 오류가 발생했습니다.
path
시스템 정의 최대 길이를 초과합니다.
호출자에게 필요한 권한이 없습니다.
path
읽기 전용인 파일을 지정합니다.
-또는-
이 작업은 현재 플랫폼에서 지원되지 않습니다.
-또는-
path
디렉터리입니다.
-또는-
호출자에게 필요한 권한이 없습니다.
예제
다음 예제에서는 파일의 줄을 읽어 지정된 문자열이 포함된 줄을 찾습니다.
foreach (string line in File.ReadLines(@"d:\data\episodes.txt"))
{
if (line.Contains("episode") & line.Contains("2006"))
{
Console.WriteLine(line);
}
}
for line in File.ReadLines @"d:\data\episodes.txt" do
if line.Contains "episode" && line.Contains "2006" then
printfn $"{line}"
For Each line As String In File.ReadLines("d:\data\episodes.txt")
If line.Contains("episode") And line.Contains("2006") Then
Console.WriteLine(line)
End If
Next line
다음 예제에서는 .txt 확장명이 있는 파일의 모든 디렉터리를 열거하고, 파일의 각 줄을 읽고, "Microsoft" 문자열이 포함된 경우 줄을 표시하는 LINQ 쿼리에서 ReadLines 메서드를 사용합니다.
using System;
using System.IO;
using System.Linq;
class Program
{
static void Main(string[] args)
{
try
{
// Set a variable to the My Documents path.
string docPath =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var files = from file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
from line in File.ReadLines(file)
where line.Contains("Microsoft")
select new
{
File = file,
Line = line
};
foreach (var f in files)
{
Console.WriteLine($"{f.File}\t{f.Line}");
}
Console.WriteLine($"{files.Count().ToString()} files found.");
}
catch (UnauthorizedAccessException uAEx)
{
Console.WriteLine(uAEx.Message);
}
catch (PathTooLongException pathEx)
{
Console.WriteLine(pathEx.Message);
}
}
}
open System
open System.IO
try
// Set a variable to the My Documents path.
let docPath =
Environment.GetFolderPath Environment.SpecialFolder.MyDocuments
let files =
query {
for file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories) do
for line in File.ReadLines file do
where (line.Contains "Microsoft")
select {| File = file; Line = line |}
}
for f in files do
printfn $"{f.File}\t{f.Line}"
printfn $"{Seq.length files} files found."
with
| :? UnauthorizedAccessException as uAEx -> printfn $"{uAEx.Message}"
| :? PathTooLongException as pathEx -> printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Xml.Linq
Module Module1
Sub Main()
Try
Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
Dim files = From chkFile In Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
From line In File.ReadLines(chkFile)
Where line.Contains("Microsoft")
Select New With {.curFile = chkFile, .curLine = line}
For Each f In files
Console.WriteLine($"{f.File}\t{f.Line}")
Next
Console.WriteLine($"{files.Count} files found.")
Catch uAEx As UnauthorizedAccessException
Console.WriteLine(uAEx.Message)
Catch pathEx As PathTooLongException
Console.WriteLine(pathEx.Message)
End Try
End Sub
End Module
설명
ReadLines 및 ReadAllLines 메서드는 다음과 같이 다릅니다. ReadLines사용하면 전체 컬렉션이 반환되기 전에 문자열 컬렉션을 열거할 수 있습니다. ReadAllLines사용하는 경우 배열에 액세스하기 전에 문자열의 전체 배열이 반환될 때까지 기다려야 합니다. 따라서 매우 큰 파일로 작업하는 경우 ReadLines 더 효율적일 수 있습니다.
ReadLines 메서드를 사용하여 다음을 수행할 수 있습니다.
파일에 대한 LINQ to Objects 쿼리를 수행하여 필터링된 줄 집합을 가져옵니다.
반환된 줄 컬렉션을 File.WriteAllLines(String, IEnumerable<String>) 메서드를 사용하여 파일에 쓰거나 File.AppendAllLines(String, IEnumerable<String>) 메서드를 사용하여 기존 파일에 추가합니다.
IList<T> 또는 Queue<T>같은 생성자에 대한 문자열의 IEnumerable<T> 컬렉션을 사용하는 컬렉션의 즉시 채워진 인스턴스를 만듭니다.
이 메서드는 인코딩 값에 UTF8 사용합니다.
적용 대상
.NET