Utiliser Visual C# pour effectuer des E/S de fichier de base
Cet article explique comment effectuer des E/S de fichier de base dans Visual C#, et fournit un exemple de code pour illustrer comment effectuer cette tâche.
Version d’origine du produit : Visual C#
Numéro de la base de connaissances d’origine : 304430
Résumé
Remarque
- Pour obtenir une version Visual Basic .NET de cet article, consultez Guide pratique pour effectuer des E/S de fichier de base dans Visual Basic 2005 ou dans Visual Basic .NET.
- Pour obtenir une version Visual C++ .NET de cet article, consultez Procédure d’E/S de fichier de base dans Visual C++ ou Visual C++ .NET.
- Cet article fait référence aux espaces de noms
System.IO
de la bibliothèque de classes Microsoft .NET Framework etSystem.Collections
.
Cet article pas à pas vous montre comment effectuer six opérations d’entrée/sortie de fichier de base dans Visual C#. Si vous débutez avec le .NET Framework, vous constaterez que le modèle objet pour les opérations de fichier dans .NET est similaire à l’authentification FileSystemObject
(FSO) qui est populaire auprès de nombreux développeurs Visual Studio 6.0. Pour faciliter la transition, utilisez les fonctionnalités présentées dans Comment utiliser FileSystemObject avec Visual Basic.
Vous pouvez toujours utiliser dans FileSystemObject
.NET. Étant donné que le FileSystemObject
est un composant COM (Component Object Model), .NET exige que l’accès à l’objet passe par la couche d’interopérabilité. Microsoft .NET génère un wrapper pour le composant pour vous si vous souhaitez l’utiliser. Toutefois, les File
classes , FileInfo
, DirectoryInfo
Directory
, et d’autres classes associées dans le .NET Framework offrent des fonctionnalités qui ne sont pas disponibles avec l’authentification FSO, sans la surcharge de la couche interopérabilité.
Opérations d’E/S de fichier illustrées
Les exemples de cet article décrivent les opérations d’E/S de fichier de base. La section Exemple pas à pas décrit comment créer un exemple de programme qui illustre les opérations d’E/S de fichier suivantes :
- Lire un fichier texte
- Écrire un fichier texte
- Afficher les informations du fichier
- Répertorier les lecteurs de disque
- Répertorier les dossiers
- Répertorier les fichiers
Si vous souhaitez utiliser directement les exemples de code suivants, tenez compte des éléments suivants :
Incluez l’espace
System.IO
de noms, comme suit :using System.IO;
Déclarez la
winDir
variable comme suit :string winDir=System.Environment.GetEnvironmentVariable("windir");
La
addListItem
fonction est déclarée comme suit :private void addListItem(string value) { this.listBox1.Items.Add(value); }
Au lieu de déclarer et d’utiliser la
addListItem
fonction, vous pouvez utiliser directement l’instruction suivante :this.listBox1.Items.Add(value);
Lire un fichier texte
L’exemple de code suivant utilise une StreamReader
classe pour lire le fichier System.ini . Le contenu du fichier est ajouté à un contrôle ListBox. Le try...catch
bloc est utilisé pour alerter le programme si le fichier est vide. Il existe de nombreuses façons de déterminer quand la fin du fichier est atteinte ; cet exemple utilise la Peek
méthode pour examiner la ligne suivante avant de la lire.
StreamReader reader=new StreamReader(winDir + "\\system.ini");
try
{
do
{
addListItem(reader.ReadLine());
}
while(reader.Peek()!= -1);
}
catch
{
addListItem("File is empty");
}
finally
{
reader.Close();
}
Écrire un fichier texte
Cet exemple de code utilise une StreamWriter
classe pour créer et écrire dans un fichier. Si vous avez un fichier existant, vous pouvez l’ouvrir de la même façon.
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");
Afficher les informations du fichier
Cet exemple de code utilise un FileInfo
objet pour accéder aux propriétés d’un fichier. Notepad.exe est utilisé dans cet exemple. Les propriétés apparaissent dans un contrôle 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;
Répertorier les lecteurs de disque
Cet exemple de code utilise les Directory
classes et Drive
pour répertorier les lecteurs logiques sur un système. Pour cet exemple, les résultats s’affichent dans un contrôle ListBox.
string[] drives = Directory.GetLogicalDrives();
foreach(string drive in drives)
{
addListItem(drive);
}
Répertorier les sous-dossiers
Cet exemple de code utilise la GetDirectories
méthode de la Directory
classe pour obtenir une liste de dossiers.
string[] dirs = Directory.GetDirectories(winDir);
foreach(string dir in dirs)
{
addListItem(dir);
}
Répertorier les fichiers
Cet exemple de code utilise la GetFiles
méthode de la Directory
classe pour obtenir une liste de fichiers.
string[] files= Directory.GetFiles(winDir);
foreach (string i in files)
{
addListItem(i);
}
De nombreux problèmes peuvent se présenter lorsqu’un utilisateur accède à des fichiers. Il se peut que les fichiers n’existent pas, qu’ils soient en cours d’utilisation ou que les utilisateurs ne disposent pas de droits sur les fichiers ou dossiers auxquels ils tentent d’accéder. Il est important de prendre en compte ces possibilités lorsque vous écrivez du code et de gérer les exceptions qui peuvent être générées.
Exemple pas à pas
Dans Visual C#, créez une application Windows Forms. Par défaut, Form1 est créé.
Ouvrez la fenêtre de code pour Form1 (Form1.cs).
Supprimez tout le code dans le Form1.cs.
Collez le code suivant dans la fenêtre Code-Behind Rédacteur.
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); } } }
Ouvrez la fenêtre de code pour Form1.Designer. cs.
Supprimez tout le code dans Form1.Designer. cs.
Collez le code suivant dans 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; } }
Par défaut, Visual C# ajoute un formulaire au projet lorsque vous créez un projet Windows Forms. Ce formulaire est nommé Form1. Les deux fichiers de code source qui représentent le formulaire sont nommés Form1.cs et Form1.Designer. cs. Vous écrivez votre code dans le fichier Form1.cs . Le Windows Forms Designer écrit le code généré par le concepteur dans form1.Designer. fichier cs. Le code des étapes précédentes reflète cette organization.
Appuyez sur F5 pour générer, puis exécutez le programme. Cliquez sur les boutons pour afficher les différentes actions. Lorsque vous affichez l’exemple de code, vous pouvez réduire la zone nommée Windows Form Designer Code généré pour masquer ce code.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour