File.ReadLines 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
讀取檔案的行。
多載
ReadLines(String, Encoding) |
讀取具有指定編碼方式的檔案行。 |
ReadLines(String) |
讀取檔案的行。 |
ReadLines(String, Encoding)
- 來源:
- File.cs
- 來源:
- File.cs
- 來源:
- 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
套用至檔案內容的編碼方式。
傳回
檔案的所有行,或查詢結果的行。
例外狀況
2.1 之前的 .NET Framework 和 .NET Core 版本:path
是長度為零的字串、只包含空格符,或包含一或多個無效字元,如 GetInvalidPathChars() 方法所定義。
path
null
。
path
無效(例如,它位於未對應的磁碟驅動器上)。
找不到 path
指定的檔案。
開啟檔案時發生 I/O 錯誤。
path
超過系統定義的最大長度。
呼叫端沒有必要的許可權。
備註
使用這個方法來指定編碼以使用讀取檔案。
ReadLines 和 ReadAllLines 方法不同,如下所示:當您使用 ReadLines時,您可以在傳回整個集合之前開始列舉字串的集合。 當您使用 ReadAllLines時,必須先等候傳回整個字串陣列,才能存取數位。 因此,當您使用非常大的檔案時,ReadLines 會更有效率。
您可以使用 ReadLines 方法來執行下列動作:
在檔案上執行 LINQ to Objects 查詢,以取得其行的篩選集。
使用 File.WriteAllLines(String, IEnumerable<String>, Encoding) 方法將傳回的行集合寫入檔案,或使用 File.AppendAllLines(String, IEnumerable<String>, Encoding) 方法將它們附加至現有的檔案。
建立集合的立即填入實例,該集合會為其建構函式取得字串的 IEnumerable<T> 集合,例如 IList<T> 或 Queue<T>。
適用於
ReadLines(String)
- 來源:
- File.cs
- 來源:
- File.cs
- 來源:
- 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
要讀取的檔案。
傳回
檔案的所有行,或查詢結果的行。
例外狀況
2.1 之前的 .NET Framework 和 .NET Core 版本:path
是長度為零的字串、只包含空格符,或包含 GetInvalidPathChars() 方法定義的一或多個無效字元。
path
null
。
path
無效(例如,它位於未對應的磁碟驅動器上)。
找不到 path
指定的檔案。
開啟檔案時發生 I/O 錯誤。
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
下列範例會使用 LINQ 查詢中的 ReadLines 方法,列舉具有 .txt 擴展名之檔案的所有目錄、讀取檔案的每一行,並在包含字串 “Microsoft” 時顯示該行。
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>) 方法將它們附加至現有的檔案。
建立集合的立即填入實例,該集合會為其建構函式取得字串的 IEnumerable<T> 集合,例如 IList<T> 或 Queue<T>。
此方法會針對編碼值使用 UTF8。