Heim  >  Artikel  >  Backend-Entwicklung  >  Das C#-Programm liest Dateiinhalte Zeile für Zeile

Das C#-Programm liest Dateiinhalte Zeile für Zeile

WBOY
WBOYnach vorne
2023-08-28 12:41:081217Durchsuche

C# 程序逐行读取文件内容

Einführung

Hier lernen wir, ein C#-Programm zu schreiben, um den Dateiinhalt Zeile für Zeile zu lesen. Dafür gibt es mehrere Möglichkeiten. Wir werden sie einzeln besprechen.

Die Dateiverwaltung erfolgt in C#. In den meisten Fällen werden Dateien zum Speichern von Daten verwendet. Laienhaft ausgedrückt sind Dateiverarbeitung oder Dateiverwaltung verschiedene Prozesse wie das Erstellen von Dateien, das Lesen von Dateien, das Schreiben von Dateien, das Anhängen von Dateien usw. Das Lesen und Schreiben von Dateien gehören zu den häufigsten Vorgängen bei der Dateiverarbeitung.

1. Verwenden Sie die Methode File.ReadLines()

Die erste Möglichkeit, den Inhalt einer Datei Zeile für Zeile zu lesen, ist die Verwendung der Methode File.ReadLines(). Diese Methode akzeptiert die Zeichenkodierung als optionalen Parameter.

Nun, dieser Prozess kann einige Ausnahmen auslösen, z. B. E/A-Ausnahmen. Dieser Fehler wird ausgelöst, wenn ein E/A-Fehler auftritt; ein weiterer Fehler, FileNotFoundException, wird ausgelöst, wenn die zu öffnende Datei nicht gefunden werden kann.

Dieser Vorgang hat auch einen Nachteil, da diese Technik bei der Arbeit mit großen Dateien recht ineffizient ist. Dies gibt ein Enumerable zurück, über das wir die Aufzählung starten können, bevor wir die gesamte Sammlung zurückgeben.

Algorithmus

Der folgende Algorithmus zeigt den schrittweisen Prozess zum zeilenweisen Lesen des Dateiinhalts mithilfe der Methode File.ReadLines().

Der unten besprochene Algorithmus wird uns bei der Erstellung des Programms unterstützen.

Schritt 1 Erstellen Sie eine Zeichenfolge, um den Namen des Dateipfads zu speichern. Denken Sie daran, dass es sich hierbei um einen absoluten Pfad handelt.

Schritt 2 Wenn Sie die Datei Zeile für Zeile lesen, verwenden Sie IEumerable, um das Endergebnis zu erhalten.

Schritt 3 Rufen Sie die für die Umgebung definierte Newline-Zeichenfolge ab, indem Sie Environment.Newline verwenden. Dann endet das Programm.

Beispiel

Hier ist der Code für diesen Prozess -

using System;
using System.Collections.Generic;
using System.IO;

public class Example {
   public static void Main() {
      string fileloc = @"D:\ttpt\locew.txt";

      IEnumerable<string> lines = File.ReadLines(fileloc);
      Console.WriteLine(String.Join(Environment.NewLine, lines));
   }
} 

Ausgabe

This is a file.
Hello from tutorials point.

Zuerst müssen Sie eine Variable vom Typ String erstellen, die die Adresse des Dateispeicherorts enthält. Lesen Sie anschließend die Datei Zeile für Zeile im Programm ein.

2. Verwenden Sie die Methode File.ReadAllLines()

Eine andere Möglichkeit, den Inhalt einer Datei Zeile für Zeile zu lesen, ist die Verwendung der Methode File.ReadAllLines(). Für große Datendateien sollten wir ReadAllLines nicht als ReadAllLines verwenden. Im Gegensatz zu ReadLines, das ein Enumerable zurückgibt, liefert ReadAllLines ein String-Array, das alle Zeilen der Datei enthält, und wir müssen warten, bis das gesamte String-Array zurückgegeben wird, bevor wir darauf zugreifen können Array.

Diese Methode akzeptiert die Zeichenkodierung als optionalen Parameter, ähnlich wie ReadLines. Dann kann dieser Prozess einige Ausnahmen auslösen, z. B. eine E/A-Ausnahme. Dieser Fehler wird ausgelöst, wenn ein E/A-Fehler auftritt; ein weiterer Fehler, FileNotFoundException, wird ausgelöst, wenn die zu öffnende Datei nicht gefunden werden kann.

Algorithmus

Der folgende Algorithmus zeigt den schrittweisen Prozess zum zeilenweisen Lesen des Dateiinhalts mithilfe der Methode File.ReadAllLines().

Der unten besprochene Algorithmus leitet uns bei der Erstellung des Programms.

Schritt 1 Erstellen Sie eine Zeichenfolge, um den Namen des Dateipfads zu speichern. Denken Sie daran, dass es sich hierbei um einen absoluten Pfad handelt.

Schritt 2 Als nächstes verwendet das Programm ReadAllLines, um eine Textdatei zu öffnen, alle Zeilen zu lesen und sie dann zu beenden.

p>

Schritt 3 Rufen Sie die für die Umgebung definierte Newline-Zeichenfolge ab, indem Sie Environment.Newline verwenden. Dann endet das Programm.

Beispiel

Hier ist der Code für diesen Prozess -

using System;
using System.IO;

public class Example {
   public static void Main() {
      string fileloc = @"D:\ttpt\locew.txt";
      string[] lines = File.ReadAllLines(fileloc);
      Console.WriteLine(String.Join(Environment.NewLine, lines));
   }
}

Ausgabe

This is a file.
Hello from tutorials point.

Zuerst müssen Sie eine Variable vom Typ String erstellen, die die Adresse des Dateispeicherorts enthält. Lesen Sie anschließend die Datei Zeile für Zeile im Programm ein. Der Unterschied besteht darin, dass die Zeilen in einem String gelesen werden. Sie sind alle verbunden, wenn string.join im Programm verwendet wird.

3. Verwenden Sie die StreamReader.ReadLine()-Methode

Es gibt auch eine Möglichkeit, eine Datei Zeile für Zeile über die StreamReader-Klasse zu lesen. Die Methode ist StreamReader.ReadLine(). Dies wird bis zum Ende der Datei ausgeführt.

Es funktioniert, indem es eine Textzeile aus dem aktuellen Stream liest und sie als String zurückgibt. Dies gibt die nächste Zeile im Eingabestream zurück oder null, wenn der Eingabestream beendet wurde. Auf diese Weise wird das Ende der Datei erreicht.

Wenn ein E/A-Fehler auftritt, tritt auch eine E/A-Ausnahme auf. Eine weitere Ausnahme ist OutOfMemoryException, die auftritt, wenn nicht genügend Speicher vorhanden ist, um einen Puffer für die zurückgegebene Zeichenfolge zu erstellen.

Algorithmus

Der folgende Algorithmus zeigt den schrittweisen Prozess zum zeilenweisen Lesen des Dateiinhalts mit der Methode StreamReader.ReadLine().

下面讨论的算法将引导我们创建程序。

第 1 步  创建一个字符串来存储文件路径的名称,记住这是一个绝对路径。

第 2 步 −  创建一个新的读取来读取文件的内容。

第 3 步  while 循环运行到文件末尾。当它达到 null 时就确定结束。

第 4 步  最终,代码在读取文件内容后退出。

示例

以下是该过程的代码 -

using System;
using System.IO;

public class Example {
   public static void Main() {
      string fileloc = @"D:\ttpt\locew.txt";

      using (StreamReader read = new StreamReader(fileloc)) {
         string line;
         while ((line = read.ReadLine()) != null) {
            Console.WriteLine(line);
         }
      }
   }
}

输出

This is a file.
Hello from tutorials point.

在此方法中,也首先使用文件地址创建一个字符串。然后创建一个读取实例。它通过逐行读取内容到达空值,即文件末尾。

时间复杂度

从这里开始,我们正在逐行读取文件,但要一次性读取。无论使用哪种方法,即 File.ReadLines()、Files.ReadAllLines() 和 StreamReader.ReadLine()。他们所有人都在一次读取文件。所以,这里每个方法的时间复杂度都是O(1)。

结论

在本文中,我们广泛讨论了逐行读取文件内容的 C# 程序。我们了解了如何通过三种不同的方式来完成它。 File 类中的两个函数是 ReadLines() 和 ReadAllLines()。第三个来自 StreamReader 类。然后我们讨论了三种技术的代码和算法。我们希望本文能够帮助您增强有关 C# 的知识。

Das obige ist der detaillierte Inhalt vonDas C#-Programm liest Dateiinhalte Zeile für Zeile. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen