English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La classe FileInfo fornisce le stesse funzionalità della classe statica File, ma puoi avere più controllo sulle operazioni di lettura/scrittura del file scrivendo manualmente il codice per leggere o scrivere byte dal file.
Proprietà | Utilizzo |
---|---|
Directory | Ottiene un'istanza del directory padre. |
DirectoryName | Ottiene una stringa che rappresenta il percorso completo della directory. |
Exists | Ottiene un valore che indica se il file esiste. |
Extension | Ottiene una stringa che rappresenta la parte di estensione del file. |
FullName | Ottiene il percorso completo del file o della directory. |
IsReadOnly | Ottiene o imposta un valore che determina se il file corrente è in sola lettura. |
LastAccessTime | Ottiene o imposta l'ora dell'ultimo accesso al file o alla directory corrente. |
LastWriteTime | Ottiene o imposta l'ora dell'ultima scrittura del file o della directory corrente. |
Length | Ottiene la dimensione corrente del file (in byte). |
Name | Ottiene il nome del file. |
Metodo | Utilizzo |
---|---|
AppendText | Crea un StreamWriter per aggiungere testo al file rappresentato da questa istanza di FileInfo. |
CopyTo | Copia il file esistente in un nuovo file senza sovrascrivere il file esistente. |
Create | Crea un file. |
CreateText | Crea un StreamWriter per scrivere in un nuovo file di testo. |
Decrypt | Decifra il file cifrato dall'account corrente utilizzando il metodo Encrypt. |
Delete | Elimina il file specificato. |
Encrypt | Cifra il file in modo che solo gli account utilizzati per cifrare il file possano decifrare il file. |
GetAccessControl | Ottiene un oggetto FileSecurity che incapsula l'elenco di controllo degli accessi (ACL) del file specificato. |
MoveTo | Sposta il file specificato in una nuova posizione e fornisce l'opzione di nome del nuovo file. |
Open | Apre un file con lo specificato FileMode. |
OpenRead | Crea un FileStream in sola lettura. |
OpenText | Crea un StreamReader con codifica UTF8, che può leggere un file di testo esistente. |
OpenWrite | Crea un FileStream in sola scrittura. |
Replace | Sostituisce il contenuto del file specificato con il file descritto dall'oggetto FileInfo corrente, elimina il file originale e crea una copia di backup del file sostituito. |
ToString | Restituisce il percorso come stringa. |
L'esempio seguente mostra come leggere manualmente byte da un file e convertirli in stringa utilizzando l'encoding UTF8:}}
Esempio: lettura di un file utilizzando la classe FileInfo
//Create FileInfo object for specified path FileInfo fi = new FileInfo(@"D:\DummyFile.txt"); //Open file for read\write FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); //Creare un array di byte della stessa dimensione del FileStream byte[] fileBytes = new byte[fs.Length]; //Definire il contatore per verificare quanti byte leggere. Decrementare il contatore ogni volta che si legge un byte int numBytesToRead = (int)fileBytes.Length; //Contatore che indica il numero di byte già letti int numBytesRead = 0; //Iterazione fino a quando non si sono letti tutti i byte dal FileStream while (numBytesToRead > 0) { int n = fs.Read(fileBytes, numBytesRead, numBytesToRead); if (n == 0) break; numBytesRead += n; numBytesToRead -= n; } //Dopo aver letto tutti i byte dal FileStream, è possibile convertirli in stringa utilizzando l'encoding UTF8 string filestring = Encoding.UTF8.GetString(fileBytes);
Come mostrato nel codice sopra, è necessario scrivere molto codice per leggere/scrivere stringhe da FileStream. Tuttavia, con StreamReader e StreamWriter è possibile completare facilmente le stesse operazioni di lettura/scrittura.
L'esempio seguente mostra come StreamReader rende facile leggere stringhe da un file:
Esempio: lettura di un file utilizzando StreamReader
//Create FileInfo object for specified path FileInfo fi = new FileInfo(@"D:\DummyFile.txt"); //Open file for read\write FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read); //Creazione dell'oggetto StreamReader passando l'oggetto FileStream da operare StreamReader sr = new StreamReader(fs); //Utilizzo del metodo ReadToEnd per leggere tutto il contenuto del file string fileContent = sr.ReadToEnd(); //Chiusura dell'oggetto StreamReader sr.Close(); fs.Close();
Note that fi.Open() has three parameters:
The first parameter is FileMode, used to create and open a file (if the file does not exist);
The second parameter FileAccess represents read operations;
The third parameter is to share the file with other users for reading when opening the file.
The following example shows how StreamWriter makes it easier to write strings to a file:
Example: Use StreamWriter to write text to a file
//Create FileInfo object for specified path FileInfo fi = new FileInfo(@"D:\DummyFile.txt"); //Open file for read\write FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read); //Create StreamWriter object to write string to FileStream StreamWriter sw = new StreamWriter(fs); sw.WriteLine("Un'altra riga proveniente da streamwriter"); sw.Close();
You cannot read and write to the same FileStream object at the same time. If you are already reading the file, please create a separate FileStream object to write to the same file as follows:
Example: StreamReader and StreamWriter
//Create FileInfo object for DummyFile.txt FileInfo fi = new FileInfo(@"D:\DummyFile.txt"); //Open DummyFile.txt for read operation FileStream fsToRead = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); //Open DummyFile.txt for write operation FileStream fsToWrite = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); //Get StreamWriter StreamReader sr = new StreamReader(fsToRead); //Use the StreamReader object to read all text string fileContent = sr.ReadToEnd(); sr.Close(); //Get StreamWriter StreamWriter sw = new StreamWriter(fsToWrite); //Scrivi alcune parole con StreamWriter sw.WriteLine("Un'altra riga proveniente da streamwriter"); sw.Close(); //Chiudi tutti gli oggetti Stream fsToRead.Close(); fsToWrite.Close();
Pertanto, è possibile utilizzare le classi FileInfo, StreamReader e StreamWriter per leggere / scrivere contenuti da file fisici.