Usare Visual C# per eseguire operazioni di I/O di file di base
Questo articolo descrive come eseguire operazioni di I/O di file di base in Visual C# e fornisce un esempio di codice per illustrare come eseguire questa attività.
Versione originale del prodotto: Oggetto visivo C#
Numero KB originale: 304430
Riepilogo
Nota
- Per una versione di Visual Basic .NET di questo articolo, vedere Come eseguire operazioni di I/O di file di base in Visual Basic 2005 o in Visual Basic .NET.
- Per una versione di Visual C++ .NET di questo articolo, vedere Come eseguire operazioni di I/O di file di base in Visual C++ o in Visual C++ .NET.
- Questo articolo fa riferimento agli spazi dei nomi
System.IO
della libreria di classi di Microsoft .NET Framework eSystem.Collections
a .
Questo articolo dettagliato illustra come eseguire sei operazioni di input/output di file di base (I/O) in Visual C#. Se non si ha esperienza con .NET Framework, si scoprirà che il modello a oggetti per le operazioni sui file in .NET è simile a FileSystemObject
quello (FSO) molto diffuso tra molti sviluppatori di Visual Studio 6.0. Per semplificare la transizione, la funzionalità illustrata in Come usare FileSystemObject con Visual Basic.
È comunque possibile usare in FileSystemObject
.NET. FileSystemObject
Poiché è un componente COM (Component Object Model), .NET richiede che l'accesso all'oggetto sia tramite il livello Interop. Microsoft .NET genera automaticamente un wrapper per il componente se si vuole usarlo. Tuttavia, le File
classi , FileInfo
, Directory
, DirectoryInfo
e altre classi correlate in .NET Framework offrono funzionalità non disponibili con FSO, senza il sovraccarico del livello Interop.
Operazioni di I/O di file illustrate
Gli esempi in questo articolo descrivono le operazioni di I/O dei file di base. La sezione di esempio dettagliata descrive come creare un programma di esempio che illustra le operazioni di I/O dei file seguenti:
- Leggere un file di testo
- Scrivere un file di testo
- Visualizzare le informazioni sui file
- Elencare le unità disco
- Elencare le cartelle
- Elencare i file
Se si vogliono usare direttamente gli esempi di codice seguenti, tenere presente quanto segue:
Includere lo spazio dei
System.IO
nomi, come indicato di seguito:using System.IO;
Dichiarare la
winDir
variabile come segue:string winDir=System.Environment.GetEnvironmentVariable("windir");
La
addListItem
funzione viene dichiarata come segue:private void addListItem(string value) { this.listBox1.Items.Add(value); }
Anziché dichiarare e usare la
addListItem
funzione , è possibile usare direttamente l'istruzione seguente:this.listBox1.Items.Add(value);
Leggere un file di testo
Il codice di esempio seguente usa una StreamReader
classe per leggere il file System.ini . Il contenuto del file viene aggiunto a un controllo ListBox. Il try...catch
blocco viene usato per avvisare il programma se il file è vuoto. Esistono molti modi per determinare quando viene raggiunta la fine del file; questo esempio usa il Peek
metodo per esaminare la riga successiva prima di leggerla.
StreamReader reader=new StreamReader(winDir + "\\system.ini");
try
{
do
{
addListItem(reader.ReadLine());
}
while(reader.Peek()!= -1);
}
catch
{
addListItem("File is empty");
}
finally
{
reader.Close();
}
Scrivere un file di testo
Questo codice di esempio usa una StreamWriter
classe per creare e scrivere in un file. Se si dispone di un file esistente, è possibile aprirlo nello stesso modo.
StreamWriter writer = new StreamWriter("c:\\KBTest.txt");
writer.WriteLine("File created using StreamWriter class.");
writer.Close();
this.listbox1.Items.Clear();
addListItem("File Written to C:\\KBTest.txt");
Visualizzare le informazioni sui file
Questo codice di esempio usa un FileInfo
oggetto per accedere alle proprietà di un file. Notepad.exe viene usato in questo esempio. Le proprietà vengono visualizzate in un controllo ListBox.
FileInfo FileProps =new FileInfo(winDir + "\\notepad.exe");
addListItem("File Name = " + FileProps.FullName);
addListItem("Creation Time = " + FileProps.CreationTime);
addListItem("Last Access Time = " + FileProps.LastAccessTime);
addListItem("Last Write TIme = " + FileProps.LastWriteTime);
addListItem("Size = " + FileProps.Length);
FileProps = null;
Elencare le unità disco
Questo codice di esempio usa le Directory
classi e Drive
per elencare le unità logiche in un sistema. Per questo esempio, i risultati vengono visualizzati in un controllo ListBox.
string[] drives = Directory.GetLogicalDrives();
foreach(string drive in drives)
{
addListItem(drive);
}
Elencare le sottocartelle
Questo codice di esempio usa il GetDirectories
metodo della Directory
classe per ottenere un elenco di cartelle.
string[] dirs = Directory.GetDirectories(winDir);
foreach(string dir in dirs)
{
addListItem(dir);
}
Elencare i file
Questo codice di esempio usa il GetFiles
metodo della Directory
classe per ottenere un elenco di file.
string[] files= Directory.GetFiles(winDir);
foreach (string i in files)
{
addListItem(i);
}
Molte cose possono andare male quando un utente ottiene l'accesso ai file. I file potrebbero non esistere, i file potrebbero essere in uso o gli utenti potrebbero non avere diritti sui file o sulle cartelle a cui stanno tentando di accedere. È importante considerare queste possibilità quando si scrive codice e si gestiscono le eccezioni che possono essere generate.
Esempio dettagliato
In Visual C# creare una nuova applicazione Windows Forms. Per impostazione predefinita, viene creato Form1 .
Aprire la finestra del codice per Form1 (Form1.cs).
Eliminare tutto il codice nel Form1.cs.
Incollare il codice seguente nella finestra code-behind Editor.
using System.Windows.Forms; using System.IO; namespace fso_cs { public partial class Form1 : Form { string winDir = System.Environment.GetEnvironmentVariable("windir"); public Form1() { InitializeComponent(); } private void button1_Click(object sender, System.EventArgs e) { //How to read a text file. //try...catch is to deal with a 0 byte file. this.listBox1.Items.Clear(); StreamReader reader = new StreamReader(winDir + "\\system.ini"); try { do { addListItem(reader.ReadLine()); } while (reader.Peek()!= -1); } catch { addListItem("File is empty"); } finally { reader.Close(); } } private void button2_Click(object sender, System.EventArgs e) { //Demonstrates how to create and write to a text file. StreamWriter writer = new StreamWriter("c:\\KBTest.txt"); writer.WriteLine("File created using StreamWriter class."); writer.Close(); this.listBox1.Items.Clear(); addListItem("File Written to C:\\KBTest.txt"); } private void button3_Click(object sender, System.EventArgs e) { //How to retrieve file properties (example uses Notepad.exe). this.listBox1.Items.Clear(); FileInfo FileProps = new FileInfo(winDir + "\\notepad.exe"); addListItem("File Name = " + FileProps.FullName); addListItem("Creation Time = " + FileProps.CreationTime); addListItem("Last Access Time = " + FileProps.LastAccessTime); addListItem("Last Write TIme = " + FileProps.LastWriteTime); addListItem("Size = " + FileProps.Length); FileProps = null; } private void button4_Click(object sender, System.EventArgs e) { //Demonstrates how to obtain a list of disk drives. this.listBox1.Items.Clear(); string[] drives = Directory.GetLogicalDrives(); foreach (string drive in drives) { addListItem(drive); } } private void button5_Click(object sender, System.EventArgs e) { //How to get a list of folders (example uses Windows folder). this.listBox1.Items.Clear(); string[] dirs = Directory.GetDirectories(winDir); foreach (string dir in dirs) { addListItem(dir); } } private void button6_Click(object sender, System.EventArgs e) { //How to obtain list of files (example uses Windows folder). this.listBox1.Items.Clear(); string[] files = Directory.GetFiles(winDir); foreach (string i in files) { addListItem(i); } } private void Form1_Load(object sender, System.EventArgs e) { this.button1.Text = "Read Text File"; this.button2.Text = "Write Text File"; this.button3.Text = "View File Information"; this.button4.Text = "List Drives"; this.button5.Text = "List Subfolders"; this.button6.Text = "List Files"; } private void addListItem(string value) { this.listBox1.Items.Add(value); } } }
Aprire la finestra del codice per Form1.Designer. cs.
Eliminare tutto il codice in Form1.Designer. cs.
Incollare il codice seguente in Form1.Designer. cs.
namespace fso_cs { partial class Form1 { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.button2 = new System.Windows.Forms.Button(); this.button3 = new System.Windows.Forms.Button(); this.button4 = new System.Windows.Forms.Button(); this.button5 = new System.Windows.Forms.Button(); this.button6 = new System.Windows.Forms.Button(); this.listBox1 = new System.Windows.Forms.ListBox(); this.SuspendLayout(); // button1 this.button1.Location = new System.Drawing.Point(53, 30); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(112, 23); this.button1.TabIndex = 1; this.button1.Text = "button1"; this.button1.Click += new System.EventHandler(this.button1_Click); // button2 this.button2.Location = new System.Drawing.Point(53, 62); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(112, 23); this.button2.TabIndex = 2; this.button2.Text = "button2"; this.button2.Click += new System.EventHandler(this.button2_Click); // button3 this.button3.Location = new System.Drawing.Point(53, 94); this.button3.Name = "button3"; this.button3.Size = new System.Drawing.Size(112, 23); this.button3.TabIndex = 3; this.button3.Text = "button3"; this.button3.Click += new System.EventHandler(this.button3_Click); // button4 this.button4.Location = new System.Drawing.Point(53, 126); this.button4.Name = "button4"; this.button4.Size = new System.Drawing.Size(112, 23); this.button4.TabIndex = 4; this.button4.Text = "button4"; this.button4.Click += new System.EventHandler(this.button4_Click); // button5 this.button5.Location = new System.Drawing.Point(53, 158); this.button5.Name = "button5"; this.button5.Size = new System.Drawing.Size(112, 23); this.button5.TabIndex = 5; this.button5.Text = "button5"; this.button5.Click += new System.EventHandler(this.button5_Click); // button6 this.button6.Location = new System.Drawing.Point(53, 190); this.button6.Name = "button6"; this.button6.Size = new System.Drawing.Size(112, 23); this.button6.TabIndex = 6; this.button6.Text = "button6"; this.button6.Click += new System.EventHandler(this.button6_Click); // listBox1 this.listBox1.FormattingEnabled = true; this.listBox1.Location = new System.Drawing.Point(204, 30); this.listBox1.Name = "listBox1"; this.listBox1.Size = new System.Drawing.Size(270, 199); this.listBox1.TabIndex = 7; // Form1 this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(525, 273); this.Controls.Add(this.button6); this.Controls.Add(this.button5); this.Controls.Add(this.button4); this.Controls.Add(this.button3); this.Controls.Add(this.button2); this.Controls.Add(this.button1); this.Controls.Add(this.listBox1); this.Name = "Form1"; this.Text = "Form1"; this.Load += new System.EventHandler(this.Form1_Load); this.ResumeLayout(false); } #endregion private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button2; private System.Windows.Forms.Button button3; private System.Windows.Forms.Button button4; private System.Windows.Forms.Button button5; private System.Windows.Forms.Button button6; private System.Windows.Forms.ListBox listBox1; } }
Per impostazione predefinita, Visual C# aggiunge una maschera al progetto quando si crea un progetto Windows Forms. Questo modulo è denominato Form1. I due file di codice sorgente che rappresentano il modulo sono denominati Form1.cs e Form1.Designer. cs. Il codice viene scritto nel file Form1.cs . Il Windows Forms Designer scrive il codice generato dalla finestra di progettazione in Form1.Designer. file cs. Il codice nei passaggi precedenti riflette tale organizzazione.
Premere F5 per compilare ed eseguire il programma. Fare clic sui pulsanti per visualizzare le diverse azioni. Quando si visualizza il codice di esempio, è possibile comprimere l'area denominata Windows Form Designer Codice generato per nascondere il codice.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per