.NET Core 实战 [No.241~252] 目录与文件
操作目录与文件主要使用如下几个类:
Directory
:提供了一系列操作目录的静态方法。File
:提供了一系列操作文件的静态方法。DirectoryInfo
:提供了一系列操作目录的实例方法。FileInfo
:提供了一系列操作文件的实例方法。DriveInfo
:磁盘信息
如下示例代码基本上包含了常用的目录和文件操作,以供参考。
csharp
var dirName = "test_dir";
var fileName_SampleData = $"{dirName}/sample.data";
var fileName_TestData = $"{dirName}/test_data";
// 判断目录是否存在
if (Directory.Exists(dirName))
{
// 判断文件是否存在
if (File.Exists(fileName_SampleData))
{
// 删除文件
File.Delete(fileName_SampleData);
}
// 创建 FileInfo 实例
var fiTestData = new FileInfo(fileName_TestData);
// 使用 FileInfo 判断文件是否存在
if (fiTestData.Exists)
{
// 使用 FileInfo 删除文件
fiTestData.Delete();
}
// 删除目录
Directory.Delete(dirName);
}
// 创建目录
Directory.CreateDirectory(dirName);
// 创建并写入文件
using (var stream = File.Create(fileName_SampleData))
{
byte[] buffer = { 2, 3, 5, 7, 11 };
// 写入文件
stream.Write(buffer, 0, buffer.Length);
stream.Close();
}
// 修改文件的创建时间
File.SetCreationTime(fileName_SampleData, new DateTime(1990, 1, 18, 12, 0, 0));
// 使用 FileInfo 类创建文件
var file = new FileInfo(fileName_TestData);
using (var s = file.Create())
{
// 写入文件
s.Write(new byte[] { 90, 1, 18 });
}
// 覆写文件内容
File.WriteAllText(fileName_SampleData, "岂曰无衣?与子同袍。\r\n");
// 向文件追加文本
File.AppendAllText(fileName_SampleData, "山川异域,\r\n");
File.AppendAllText(fileName_SampleData, "风月同天。\r\n\r\n");
// 以行的形式写入文本
File.AppendAllLines(fileName_SampleData, new string[] {
"绝对有佳人,幽居在空谷。",
"自云良家子,零落依草木。",
"",
});
// 读取文件中所有行
var lines = File.ReadAllLines(fileName_SampleData);
foreach (var line in lines)
{
Console.WriteLine(line);
}
// 获取文件信息
DirectoryInfo dir = new DirectoryInfo(dirName);
var q = from f in dir.EnumerateFiles()
orderby f.Length
select (FileName: f.Name, FileSize: f.Length);
// 重命名目录
var oldName = "test_1";
var newName = "test_2";
if (Directory.Exists(newName))
{
Directory.Delete(newName);
}
Directory.CreateDirectory(oldName);
Directory.Move(oldName, newName);
// 枚举磁盘驱动器
DriveInfo[] driveInfos = DriveInfo.GetDrives();
var qd = from d in driveInfos
where d.IsReady
select d;
foreach (var di in qd)
{
Console.WriteLine($"驱动器名:{di.Name}");
Console.WriteLine($"卷标:{di.VolumeLabel}");
Console.WriteLine($"总容量:{di.TotalSize}");
Console.WriteLine($"当前可用空间:{di.TotalFreeSpace}");
Console.WriteLine($"驱动器类型:{di.DriveType}");
Console.WriteLine($"文件格式:{di.DriveFormat}");
Console.WriteLine($"根目录:{di.RootDirectory.Name}");
Console.WriteLine();
}
输出结果如下:
参考:《.NET Core 实战:手把手教你掌握 380 个精彩案例》 -- 周家安 著