2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Les opérations d’E/S du système de fichiers constituent une partie importante de tout langage de programmation, et C# ne fait pas exception. Qu'il s'agisse de lire et d'écrire des fichiers, de gérer des répertoires ou de traiter des flux de fichiers, C# fournit une bibliothèque de classes riche et puissante pour implémenter ces fonctions. Cet article présentera en détail les opérations d’E/S du système de fichiers en C# et montrera comment gérer efficacement les fichiers et les répertoires à travers des exemples de code.
En C#, vous pouvez utiliserSystem.IO
sous l'espace de nomsFile
Classe pour effectuer des opérations d’écriture de fichiers.
Exemple:
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string path = "example.txt";
- string content = "这是一个示例文本。";
-
- // 写入文件
- File.WriteAllText(path, content);
- Console.WriteLine("文件写入成功。");
- }
- }
De même, on peut aussi utiliserFile
Classe pour lire le contenu du fichier :
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string path = "example.txt";
-
- if (File.Exists(path))
- {
- // 读取文件内容
- string content = File.ReadAllText(path);
- Console.WriteLine("文件内容:");
- Console.WriteLine(content);
- }
- else
- {
- Console.WriteLine("文件不存在。");
- }
- }
- }
Les flux de fichiers offrent un moyen plus flexible de lire et d'écrire des fichiers, notamment lors du traitement de fichiers volumineux, les flux de fichiers peuvent lire et écrire des données octet par octet, évitant ainsi une utilisation excessive de la mémoire.
FileStream
écrire un fichier- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string path = "filestream_example.txt";
- byte[] data = System.Text.Encoding.UTF8.GetBytes("通过FileStream写入的数据。");
-
- using (FileStream fs = new FileStream(path, FileMode.Create))
- {
- fs.Write(data, 0, data.Length);
- Console.WriteLine("数据已通过FileStream写入。");
- }
- }
- }
FileStream
lire le fichier- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string path = "filestream_example.txt";
-
- using (FileStream fs = new FileStream(path, FileMode.Open))
- {
- byte[] data = new byte[fs.Length];
- fs.Read(data, 0, data.Length);
- string content = System.Text.Encoding.UTF8.GetString(data);
- Console.WriteLine("通过FileStream读取的内容:");
- Console.WriteLine(content);
- }
- }
- }
En C#, vous pouvez utiliserDirectory
classe pour créer un répertoire :
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string dirPath = "example_directory";
-
- if (!Directory.Exists(dirPath))
- {
- Directory.CreateDirectory(dirPath);
- Console.WriteLine("目录创建成功。");
- }
- else
- {
- Console.WriteLine("目录已存在。");
- }
- }
- }
peut utiliserDirectory
Classe pour supprimer un répertoire :
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string dirPath = "example_directory";
-
- if (Directory.Exists(dirPath))
- {
- Directory.Delete(dirPath, true);
- Console.WriteLine("目录已删除。");
- }
- else
- {
- Console.WriteLine("目录不存在。");
- }
- }
- }
peut utiliserDirectory
La classe obtient la liste des fichiers dans le répertoire spécifié :
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string dirPath = "example_directory";
-
- if (Directory.Exists(dirPath))
- {
- string[] files = Directory.GetFiles(dirPath);
- Console.WriteLine("目录中的文件:");
- foreach (string file in files)
- {
- Console.WriteLine(file);
- }
- }
- else
- {
- Console.WriteLine("目录不存在。");
- }
- }
- }
Tous les fichiers d'un répertoire et de ses sous-répertoires peuvent être parcourus à l'aide d'un algorithme récursif :
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string dirPath = "example_directory";
-
- if (Directory.Exists(dirPath))
- {
- TraverseDirectory(dirPath);
- }
- else
- {
- Console.WriteLine("目录不存在。");
- }
- }
-
- static void TraverseDirectory(string dirPath)
- {
- string[] files = Directory.GetFiles(dirPath);
- string[] directories = Directory.GetDirectories(dirPath);
-
- foreach (string file in files)
- {
- Console.WriteLine("文件: " + file);
- }
-
- foreach (string directory in directories)
- {
- Console.WriteLine("目录: " + directory);
- TraverseDirectory(directory); // 递归遍历子目录
- }
- }
- }
Dans les opérations du système de fichiers, la lecture et la définition des attributs de fichier sont une exigence courante. C# fournitFileInfo
classe pour implémenter cette fonctionnalité.
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string filePath = "example.txt";
-
- FileInfo fileInfo = new FileInfo(filePath);
-
- if (fileInfo.Exists)
- {
- Console.WriteLine("文件名: " + fileInfo.Name);
- Console.WriteLine("文件路径: " + fileInfo.FullName);
- Console.WriteLine("文件大小: " + fileInfo.Length);
- Console.WriteLine("创建时间: " + fileInfo.CreationTime);
- Console.WriteLine("最后访问时间: " + fileInfo.LastAccessTime);
- Console.WriteLine("最后修改时间: " + fileInfo.LastWriteTime);
- }
- else
- {
- Console.WriteLine("文件不存在。");
- }
- }
- }
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string filePath = "example.txt";
-
- FileInfo fileInfo = new FileInfo(filePath);
-
- if (fileInfo.Exists)
- {
- // 设置文件属性
- fileInfo.Attributes = FileAttributes.ReadOnly;
- Console.WriteLine("文件属性已设置为只读。");
-
- // 恢复文件属性
- fileInfo.Attributes = FileAttributes.Normal;
- Console.WriteLine("文件属性已恢复为正常。");
- }
- else
- {
- Console.WriteLine("文件不存在。");
- }
- }
- }
L'utilisation de méthodes asynchrones peut améliorer la réactivité de votre application lorsque vous travaillez avec des fichiers volumineux ou effectuez des opérations fastidieuses sur les fichiers. C# fournit des méthodes asynchrones pour lire et écrire des fichiers.
- using System;
- using System.IO;
- using System.Threading.Tasks;
-
- class Program
- {
- static async Task Main()
- {
- string path = "async_example.txt";
- string content = "这是一个异步写入示例。";
-
- await File.WriteAllTextAsync(path, content);
- Console.WriteLine("文件异步写入成功。");
- }
- }
- using System;
- using System.IO;
- using System.Threading.Tasks;
-
- class Program
- {
- static async Task Main()
- {
- string path = "async_example.txt";
-
- if (File.Exists(path))
- {
- string content = await File.ReadAllTextAsync(path);
- Console.WriteLine("文件内容:");
- Console.WriteLine(content);
- }
- else
- {
- Console.WriteLine("文件不存在。");
- }
- }
- }
C# fournitFileSystemWatcher
Classe permettant de surveiller les modifications apportées aux fichiers ou aux répertoires dans un répertoire spécifié. Ceci est utile dans les applications qui doivent répondre aux modifications du système de fichiers.
FileSystemWatcher
Surveiller les modifications des fichiers- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string path = "example_directory";
-
- if (!Directory.Exists(path))
- {
- Directory.CreateDirectory(path);
- }
-
- FileSystemWatcher watcher = new FileSystemWatcher();
- watcher.Path = path;
- watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite | NotifyFilters.Size;
- watcher.Filter = "*.*";
-
- watcher.Changed += OnChanged;
- watcher.Created += OnChanged;
- watcher.Deleted += OnChanged;
- watcher.Renamed += OnRenamed;
-
- watcher.EnableRaisingEvents = true;
-
- Console.WriteLine("正在监视目录: " + path);
- Console.WriteLine("按任意键退出...");
- Console.ReadKey();
- }
-
- private static void OnChanged(object source, FileSystemEventArgs e)
- {
- Console.WriteLine($"文件: {e.FullPath} {e.ChangeType}");
- }
-
- private static void OnRenamed(object source, RenamedEventArgs e)
- {
- Console.WriteLine($"文件: {e.OldFullPath} 重命名为 {e.FullPath}");
- }
- }
J'espère que ce contenu vous sera utile, merci d'avoir lu !