C # - I / O di file

UN fileè una raccolta di dati archiviati in un disco con un nome specifico e un percorso di directory. Quando un file viene aperto per la lettura o la scrittura, diventa un filestream.

Il flusso è fondamentalmente la sequenza di byte che passano attraverso il percorso di comunicazione. Ci sono due flussi principali: ilinput stream e il output stream. Il input stream viene utilizzato per leggere i dati dal file (operazione di lettura) e il file output stream viene utilizzato per scrivere nel file (operazione di scrittura).

Classi di I / O C #

Lo spazio dei nomi System.IO ha varie classi che vengono utilizzate per eseguire numerose operazioni con i file, come la creazione e l'eliminazione di file, la lettura o la scrittura su un file, la chiusura di un file ecc.

La tabella seguente mostra alcune classi non astratte di uso comune nello spazio dei nomi System.IO -

Sr.No. Classe e descrizione I / O
1

BinaryReader

Legge i dati primitivi da un flusso binario.

2

BinaryWriter

Scrive dati primitivi in ​​formato binario.

3

BufferedStream

Una memoria temporanea per un flusso di byte.

4

Directory

Aiuta a manipolare una struttura di directory.

5

DirectoryInfo

Utilizzato per eseguire operazioni sulle directory.

6

DriveInfo

Fornisce informazioni per le unità.

7

File

Aiuta a manipolare i file.

8

FileInfo

Utilizzato per eseguire operazioni sui file.

9

FileStream

Utilizzato per leggere e scrivere in qualsiasi posizione in un file.

10

MemoryStream

Utilizzato per l'accesso casuale ai dati in streaming archiviati in memoria.

11

Path

Esegue operazioni sulle informazioni sul percorso.

12

StreamReader

Utilizzato per leggere caratteri da un flusso di byte.

13

StreamWriter

Viene utilizzato per scrivere caratteri in un flusso.

14

StringReader

Viene utilizzato per la lettura da un buffer di stringa.

15

StringWriter

Viene utilizzato per scrivere in un buffer di stringhe.

La classe FileStream

Il FileStreamclass nello spazio dei nomi System.IO aiuta a leggere, scrivere e chiudere file. Questa classe deriva dalla classe astratta Stream.

Devi creare un file FileStreamoggetto per creare un nuovo file o aprire un file esistente. La sintassi per creare un fileFileStream l'oggetto è il seguente -

FileStream <object_name> = new FileStream( <file_name>, <FileMode Enumerator>,
   <FileAccess Enumerator>, <FileShare Enumerator>);

Ad esempio, creiamo un oggetto FileStream F per leggere un file denominato sample.txt as shown -

FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read,
   FileShare.Read);
Sr.No. Parametro e descrizione
1

FileMode

Il FileModeenumerator definisce vari metodi per aprire i file. I membri dell'enumeratore FileMode sono:

  • Append - Apre un file esistente e posiziona il cursore alla fine del file o crea il file, se il file non esiste.

  • Create - Crea un nuovo file.

  • CreateNew - Specifica al sistema operativo che deve creare un nuovo file.

  • Open - Apre un file esistente.

  • OpenOrCreate - Specifica al sistema operativo che dovrebbe aprire un file se esiste, altrimenti dovrebbe creare un nuovo file.

  • Truncate - Apre un file esistente e ne tronca la dimensione a zero byte.

2

FileAccess

FileAccess gli enumeratori hanno membri: Read, ReadWrite e Write.

3

FileShare

FileShare gli enumeratori hanno i seguenti membri:

  • Inheritable - Consente a un handle di file di passare l'ereditarietà ai processi figli

  • None - Rifiuta la condivisione del file corrente

  • Read - Permette di aprire il file per la lettura.

  • ReadWrite - Consente di aprire il file per la lettura e la scrittura

  • Write - Permette di aprire il file per la scrittura

Esempio

Il seguente programma mostra l'uso di FileStream classe -

using System;
using System.IO;

namespace FileIOApplication {
   class Program {
      static void Main(string[] args) {
         FileStream F = new FileStream("test.dat", FileMode.OpenOrCreate, 
            FileAccess.ReadWrite);
         
         for (int i = 1; i <= 20; i++) {
            F.WriteByte((byte)i);
         }
         F.Position = 0;
         for (int i = 0; i <= 20; i++) {
            Console.Write(F.ReadByte() + " ");
         }
         F.Close();
         Console.ReadKey();
      }
   }
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1

Operazioni avanzate sui file in C #

L'esempio precedente fornisce semplici operazioni sui file in C #. Tuttavia, per utilizzare gli immensi poteri delle classi System.IO di C #, è necessario conoscere le proprietà ei metodi comunemente usati di queste classi.

Sr.No. Argomento e descrizione
1 Lettura da e scrittura in file di testo

Implica la lettura e la scrittura in file di testo. IlStreamReader e StreamWriter la classe aiuta a realizzarlo.

2 Lettura da e scrittura in file binari

Implica la lettura e la scrittura in file binari. IlBinaryReader e BinaryWriter la classe aiuta a raggiungere questo obiettivo.

3 Manipolazione del file system di Windows

Fornisce a un programmatore C # la capacità di sfogliare e individuare file e directory di Windows.