Modi per leggere il file C# con esempi

 C Programming >> Programmazione C >  >> Tags >> File
Modi per leggere il file C# con esempi

Nei miei articoli precedenti ho discusso dello Streaming in .NET e Classe FileStream in .NET  che ti darà un'idea chiara del concetto di streaming in .NET Framework. In questo articolo voglio discutere dei vari modi in cui possiamo leggere il file C# dal File System (backing store).

Leggi il file C# utilizzando la classe File

  1. Aperto – Il metodo Open fornito dalla classe File può essere utilizzato per leggere un file. Ma qui dobbiamo occuparci della versione sovraccarica della funzione. Se stiamo utilizzando i metodi di apertura mostrati di seguito con due parametri e se stiamo passando il FileMode come Append, il file verrà aperto in modalità di accesso in scrittura per le altre modalità sarà l'accesso in lettura e scrittura.
    public static FileStream Open(string path, FileMode mode);

    Ma lo scenario precedente non è applicabile per gli altri due overload (mostrati di seguito) dei metodi

    public static FileStream Open(string path, FileMode mode, FileAccess access);
    public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share);

    Di seguito è riportato il codice che ho usato per leggere un file dal mio sistema locale

                using (FileStream fs = File.Open("C:\\Test.txt", FileMode.Open))
                {
                    byte[] bytesRead = new byte[fs.Length];
                    fs.Read(bytesRead, 0, Convert.ToInt32(fs.Length));
    
                    string result = System.Text.Encoding.UTF8.GetString(bytesRead);
    
                }

    Questo è uno dei metodi più veloci insieme a ReadAllBytes (di cui parlerò in seguito) per leggere un file dal sistema.

  2. ReadAllBytes – Questo metodo può essere utilizzato per leggere tutti i byte del file dal file system come mostrato di seguito.
                byte[] bytesRead = File.ReadAllBytes("C:\\Test.txt");
                string result = System.Text.Encoding.UTF8.GetString(bytesRead);
  3. ReadAllText – Questo è il metodo utilizzato per leggere il contenuto del File come stringa e non come byte
    string text = File.ReadAllText("C:\\Test.txt");
  4. ReadAllLines – Questo metodo restituirà il   raccolta delle righe del file. Questo è uno dei metodi più lenti per recuperare il testo del file poiché internamente crea un elenco di righe di file utilizzando StreamReader e restituisce un array di stringhe.
    string[] allLines = File.ReadAllLines("C:\\Test.txt");
  5. OpenText – Se vogliamo ottenere la raccolta delle righe del file di testo proprio come ReadAllLINEs possiamo anche utilizzare OpenText che è migliore in termini di prestazioni rispetto a ReadAllLines
                StringBuilder sb = new StringBuilder();
                using (StreamReader sr = File.OpenText("C:\\Test.txt"))
                {
                    string s = "";
                    while ((s = sr.ReadLine()) != null)
                    {
                        sb.Append(s.ToString());
                    }
                }
  6. ReadLines – Questo metodo restituisce l'enumeratore sulla raccolta di righe per il file e può essere aiutato a ottenere la raccolta di righe per il file come mostrato nel frammento di codice seguente.
            private static void ReadLines()
            {
                StringBuilder sb = new StringBuilder();
                foreach (var item in File.ReadLines("C:\\Test.txt"))
                {
                    sb.Append(item.ToString());
                }
            }

Alcuni confronti delle prestazioni

Mentre scrivevo di tutti i metodi che possono essere utilizzati per leggere un file, ero un po' curioso delle prestazioni di tutte queste funzioni sebbene tutti questi metodi restituiscano tipi di ritorno diversi ma io aver convertito tutti i tipi restituiti in stringa e provato a misurare le prestazioni leggendo un file di circa 15 MB. Di seguito trovi la tabella che mostra il tempo approssimativo impiegato in millisecondi da ciascuno dei metodi.

Metodo Tempo impiegato per leggere il file (in ms)
File.Apri  26
LeggiTuttoTesto 54
ReadAllLines 344
OpenText 124
ReadAllBytes 23
ReadLines 130

In questo articolo ho discusso dei vari modi in cui possiamo leggere un file dal sistema e confrontarne le prestazioni.