Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Program C# membaca kandungan fail baris demi baris

Program C# membaca kandungan fail baris demi baris

WBOY
WBOYke hadapan
2023-08-28 12:41:081286semak imbas

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

Pengenalan

Di sini, kita akan belajar menulis program C# untuk membaca kandungan fail baris demi baris. Terdapat beberapa cara untuk melakukan ini. Kami akan membincangkannya satu persatu.

Pemprosesan fail dilakukan dalam C#. Selalunya, fail digunakan untuk menyimpan data. Dalam istilah orang awam, pemprosesan fail atau pengurusan fail adalah pelbagai proses seperti membuat fail, membaca fail, menulis fail, menambah fail, dll. Membaca dan menulis fail adalah dua daripada operasi yang paling biasa dalam pemprosesan fail.

1. Gunakan kaedah File.ReadLines()

Cara pertama untuk membaca kandungan fail baris demi baris ialah menggunakan kaedah File.ReadLines(). Kaedah ini menerima pengekodan aksara sebagai parameter pilihan.

Nah, proses ini mungkin mengeluarkan beberapa pengecualian, seperti pengecualian IO. Ralat ini dilemparkan jika ralat I/O berlaku; ralat lain, FileNotFoundException, dilemparkan jika fail yang cuba dibuka tidak ditemui.

Proses ini juga mempunyai kelemahan, kerana teknik ini agak tidak cekap apabila anda berurusan dengan fail yang besar. Ini mengembalikan Enumerable yang melaluinya kita boleh memulakan penghitungan sebelum mengembalikan keseluruhan koleksi.

Algoritma

Algoritma di bawah akan memberikan proses langkah demi langkah membaca kandungan fail baris demi baris menggunakan kaedah File.ReadLines().

Algoritma yang dibincangkan di bawah akan membimbing kami dalam mencipta atur cara.

Langkah 1 Buat rentetan untuk menyimpan nama laluan fail, ingat ini adalah laluan mutlak.

Langkah 2 Apabila membaca fail baris demi baris, gunakan IEumerable untuk mendapatkan hasil akhir.

Langkah 3 Dapatkan rentetan baris baharu yang ditakrifkan untuk persekitaran dengan menggunakan Environment.Newline. Kemudian program tamat.

Contoh

Berikut ialah kod untuk proses ini -

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));
   }
} 

Output

This is a file.
Hello from tutorials point.

Pertama anda perlu mencipta pembolehubah jenis rentetan yang mengandungi alamat lokasi fail. Selepas itu, baca fail baris demi baris dalam program.

2. Gunakan kaedah File.ReadAllLines()

Cara lain untuk membaca kandungan fail baris demi baris ialah menggunakan kaedah File.ReadAllLines(). Untuk fail data besar, kita tidak seharusnya menggunakan ReadAllLines sebagai ReadAllLines, tidak seperti ReadLines yang mengembalikan Enumerable, ReadAllLines memberikan tatasusunan rentetan yang mengandungi semua baris fail dan kami perlu menunggu seluruh tatasusunan rentetan dikembalikan sebelum kami boleh mengakses tatasusunan.

Kaedah ini menerima pengekodan aksara sebagai parameter pilihan, sama seperti yang dilakukan oleh ReadLines. Kemudian proses ini mungkin membuang beberapa pengecualian, seperti IO Exception. Ralat ini dilemparkan jika ralat I/O berlaku; ralat lain, FileNotFoundException, dilemparkan jika fail yang cuba dibuka tidak ditemui.

Algoritma

Algoritma di bawah akan memberikan proses langkah demi langkah membaca kandungan fail baris demi baris menggunakan kaedah File.ReadAllLines().

Algoritma yang dibincangkan di bawah membimbing kami dalam mencipta atur cara.

Langkah 1 Buat rentetan untuk menyimpan nama laluan fail, ingat ini adalah laluan mutlak.

Langkah 2 Seterusnya, atur cara menggunakan ReadAllLines untuk membuka fail teks, membaca semua barisnya dan kemudian menamatkannya.

p>

Langkah 3 Dapatkan rentetan baris baharu yang ditakrifkan untuk persekitaran dengan menggunakan Environment.Newline. Kemudian program tamat.

Contoh

Berikut ialah kod untuk proses ini -

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));
   }
}

Output

This is a file.
Hello from tutorials point.

Pertama anda perlu mencipta pembolehubah jenis rentetan yang mengandungi alamat lokasi fail. Selepas itu, baca fail baris demi baris dalam program. Di sini, perbezaannya ialah garisan dibaca dalam rentetan. Kesemuanya disambungkan apabila menggunakan string.join dalam program.

3. Gunakan kaedah StreamReader.ReadLine()

Terdapat juga cara untuk membaca fail baris demi baris melalui kelas StreamReader. Kaedahnya ialah StreamReader.ReadLine(). Ini akan berjalan ke penghujung fail.

Ia berfungsi dengan membaca baris teks daripada strim semasa dan mengembalikannya sebagai rentetan. Ini mengembalikan baris seterusnya dalam aliran input, atau batal jika aliran input telah tamat. Dengan cara ini ia sampai ke penghujung fail.

Jika sebarang ralat I/O berlaku, pengecualian I/O juga akan berlaku. Pengecualian lain ialah OutOfMemoryException, yang berlaku apabila memori tidak mencukupi untuk mencipta penimbal bagi rentetan yang dikembalikan.

Algoritma

Algoritma di bawah akan memberikan proses langkah demi langkah membaca kandungan fail baris demi baris menggunakan kaedah 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# 的知识。

Atas ialah kandungan terperinci Program C# membaca kandungan fail baris demi baris. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam