Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya dapat membaca fail teks dengan cekap dengan menggunakan C#?

Bagaimanakah saya dapat membaca fail teks dengan cekap dengan menggunakan C#?

Patricia Arquette
Lepaskan: 2025-01-29 12:01:20
asal
152 orang telah melayarinya

baca kaedah fail teks C#secara terperinci

How Can I Efficiently Read a Text File in Reverse Order Using C#?

Dalam reka bentuk program, kadang -kadang fail teks perlu dibaca ke belakang. Ini boleh dilaksanakan oleh Iterators, yang membolehkan data pemprosesan berurutan tanpa memuatkan keseluruhan fail ke dalam memori untuk meningkatkan kecekapan.

Apabila membaca fail teks terbalik, kaedah pengekodan fail mesti dipertimbangkan. Sebagai contoh, jika fail menggunakan pengekodan UTF-8, anda perlu mengenal pasti kedudukan permulaan setiap watak Unicode dan memproses sebarang urutan UTF-8 yang tidak sah.

Serpihan kod C#berikut menunjukkan cara menggunakan Iterator untuk membaca fail teks:

<code class="language-csharp">using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;

public static class ReverseFileStreamReader
{
    public static IEnumerable<string> ReadFileLinesReverse(string filePath)
    {
        using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
        {
            long fileLength = fileStream.Length;
            byte[] buffer = new byte[1024];

            for (long position = fileLength - buffer.Length; position >= 0; position -= buffer.Length)
            {
                fileStream.Seek(position, SeekOrigin.Begin);
                int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
                var lines = GetLinesFromBuffer(buffer, bytesRead);

                foreach (var line in lines)
                {
                    yield return line;
                }
            }
        }
    }

    private static IEnumerable<string> GetLinesFromBuffer(byte[] buffer, int bytesRead)
    {
        return new string(GetCharactersFromBuffer(buffer, bytesRead))
            .Split('\n')
            .Reverse();
    }

    private static IEnumerable<char> GetCharactersFromBuffer(byte[] buffer, int bytesRead)
    {
        using (var memoryStream = new MemoryStream(buffer, 0, bytesRead))
        {
            using (var streamReader = new StreamReader(memoryStream, Encoding.UTF8))
            {
                while (!streamReader.EndOfStream)
                {
                    yield return (char)streamReader.Read();
                }
            }
        }
    }
}</code>
Salin selepas log masuk
Kod ini boleh membaca fail teks terbalik dan memproses setiap baris yang dihasilkan dalam rangka. Ia menggunakan iterator untuk mengelakkan membaca keseluruhan fail ke dalam ingatan pada satu masa, dengan itu meningkatkan kecekapan memproses fail besar. Pada masa yang sama, ia menggunakan untuk memastikan pemprosesan fail pengekodan UTF-8 yang betul.

Atas ialah kandungan terperinci Bagaimanakah saya dapat membaca fail teks dengan cekap dengan menggunakan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan