编辑
2025-09-28
C#
00

目录

文件操作
读取文件
写入文件
目录操作
创建目录
列出目录中的文件和子目录
文件和目录信息
获取文件信息
修改文件属性
文件系统监控

C#的System.IO命名空间是.NET Framework中一个功能强大的库,它提供了一系列的类和方法,用于执行输入和输出操作,包括文件和数据流的读写、文件和目录的创建和管理等。在本文中,我们将深入探讨System.IO命名空间,并通过一系列的示例来展示其用法。

文件操作

读取文件

要读取文本文件,可以使用StreamReader类。以下示例演示了如何读取一个文本文件的全部内容:

C#
namespace AppIO { internal class Program { static void Main(string[] args) { string path = "./myfile.txt"; try { using (StreamReader reader = new StreamReader(path)) { string content = reader.ReadToEnd(); Console.WriteLine(content); } } catch (IOException e) { Console.WriteLine("An IO exception has been thrown!"); Console.WriteLine(e.ToString()); } Console.ReadKey(); } } }

image.png

写入文件

与读取文件类似,StreamWriter类用于写入文本文件。下面的示例展示了如何向文件写入一些文本:

C#
namespace AppIO { internal class Program { static void Main(string[] args) { string path = "./myfile.txt"; try { using (StreamWriter writer = new StreamWriter(path)) { writer.WriteLine("Hello, World!"); } } catch (IOException e) { Console.WriteLine("An IO exception has been thrown!"); Console.WriteLine(e.ToString()); } Console.ReadKey(); } } }

image.png

目录操作

创建目录

Directory类提供了创建目录的方法。以下示例展示了如何创建一个新目录:

C#
namespace AppIO { internal class Program { static void Main(string[] args) { string path = @".\newfolder"; try { // 如果目录不存在,则创建它 if (!Directory.Exists(path)) { Directory.CreateDirectory(path); Console.WriteLine($"Directory created at {path}"); } } catch (IOException e) { Console.WriteLine("An IO exception has been thrown!"); Console.WriteLine(e.ToString()); } Console.ReadKey(); } } }

列出目录中的文件和子目录

要获取目录中的所有文件和子目录,可以使用DirectoryInfo类。以下示例展示了如何列出特定目录中的内容:

C#
namespace AppIO { internal class Program { static void Main(string[] args) { string path = @"C:\Windows"; DirectoryInfo directoryInfo = new DirectoryInfo(path); try { // 获取目录中的文件 FileInfo[] files = directoryInfo.GetFiles(); Console.WriteLine("Files:"); foreach (FileInfo file in files) { Console.WriteLine($" {file.Name}"); } // 获取目录中的子目录 DirectoryInfo[] subDirs = directoryInfo.GetDirectories(); Console.WriteLine("Directories:"); foreach (DirectoryInfo dir in subDirs) { Console.WriteLine($" {dir.Name}"); } } catch (IOException e) { Console.WriteLine("An IO exception has been thrown!"); Console.WriteLine(e.ToString()); } Console.ReadKey(); } } }

image.png

文件和目录信息

获取文件信息

FileInfo类提供了获取和设置文件属性的方法,如大小、创建时间和最后访问时间。以下示例演示了如何获取文件信息:

C#
namespace AppIO { internal class Program { static void Main(string[] args) { string path = @".\myfile.txt"; FileInfo fileInfo = new FileInfo(path); if (fileInfo.Exists) { Console.WriteLine($"File name: {fileInfo.Name}"); Console.WriteLine($"File size: {fileInfo.Length}"); Console.WriteLine($"Creation time: {fileInfo.CreationTime}"); Console.WriteLine($"Last access time: {fileInfo.LastAccessTime}"); } else { Console.WriteLine("File does not exist."); } Console.ReadKey(); } } }

image.png

修改文件属性

你也可以使用FileInfo类来修改文件的属性。以下示例展示了如何设置文件的只读属性:

C#
namespace AppIO { internal class Program { static void Main(string[] args) { string path = @".\myfile.txt"; FileInfo fileInfo = new FileInfo(path); if (fileInfo.Exists) { // 设置文件为只读 fileInfo.IsReadOnly = true; Console.WriteLine("File set to read-only."); } else { Console.WriteLine("File does not exist."); } Console.ReadKey(); } } }

image.png

文件系统监控

FileSystemWatcher类允许你监听文件系统的更改事件,如文件的创建、修改、删除等。以下示例展示了如何监控目录中的文件更改:

C#
namespace AppIO { internal class Program { static void Main(string[] args) { string path = System.Environment.CurrentDirectory; FileSystemWatcher watcher = new FileSystemWatcher(path); watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; // 注册事件处理程序 watcher.Changed += OnChanged; watcher.Created += OnChanged; watcher.Deleted += OnChanged; watcher.Renamed += OnRenamed; // 开始监控 watcher.EnableRaisingEvents = true; Console.WriteLine($"Monitoring changes to {path}"); Console.WriteLine("Press 'q' to quit."); while (Console.Read() != 'q') ; // 定义事件处理程序 void OnChanged(object sender, FileSystemEventArgs e) { Console.WriteLine($"File: {e.FullPath} {e.ChangeType}"); } void OnRenamed(object sender, RenamedEventArgs e) { Console.WriteLine($"File: {e.OldFullPath} renamed to {e.FullPath}"); } Console.ReadKey(); } } }

image.png

上述代码将监控指定路径下的文件更改,并在控制台输出更改信息。当你创建、修改或删除目录中的文件时,相应的事件处理程序将被触发。

System.IO命名空间提供了丰富的类和方法,用于处理文件和目录操作。通过上述示例,我们可以看到如何使用这些工具来执行各种文件系统任务。无论是读写文件、管理目录,还是监控文件系统的更改,System.IO都是处理这些任务的理想选择。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!