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();
}
}
}
与读取文件类似,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();
}
}
}
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();
}
}
}
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();
}
}
}
你也可以使用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();
}
}
}
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();
}
}
}
上述代码将监控指定路径下的文件更改,并在控制台输出更改信息。当你创建、修改或删除目录中的文件时,相应的事件处理程序将被触发。
System.IO
命名空间提供了丰富的类和方法,用于处理文件和目录操作。通过上述示例,我们可以看到如何使用这些工具来执行各种文件系统任务。无论是读写文件、管理目录,还是监控文件系统的更改,System.IO
都是处理这些任务的理想选择。
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!