跳转至

File 与 Directory#

来源D:\study\C#1\WinForm\stu0810\文件操作

FileDirectory 是 C# 文件系统操作的两个静态类,一个操作文件、一个操作目录(文件夹),不需要创建对象,直接用类名调用。


1. File 类 — 文件操作(静态方法)#

// 判断文件是否存在
if (File.Exists(path)) { }

// 删除文件
File.Delete(path);

// 复制文件
File.Copy(sourcePath, destPath);           // 不允许覆盖(目标存在会异常)
File.Copy(sourcePath, destPath, true);     // 允许覆盖

// 移动/重命名文件
File.Move(sourcePath, destPath);

// 读取/写入(快捷方式)
string content = File.ReadAllText(path);              // 读整个文本
string[] lines = File.ReadAllLines(path);             // 按行读
File.WriteAllText(path, content);                     // 写整个文本
File.AppendAllText(path, "追加内容\r\n");              // 追加

完整实战(文件管理器)#

// 删除文件
private void button4_Click(object sender, EventArgs e)
{
    string path = textBox2.Text;
    File.Delete(path);
}

// 复制文件(先判断存在)
private void button5_Click(object sender, EventArgs e)
{
    if (File.Exists(textBox2.Text))
    {
        File.Copy(textBox2.Text, textBox3.Text);
    }
}

// 移动文件
private void button6_Click(object sender, EventArgs e)
{
    if (File.Exists(textBox2.Text))
    {
        File.Move(textBox2.Text, textBox3.Text);
    }
}

💡 复制/移动/删除前先判断文件是否存在是良好的习惯,避免抛异常。

2. Directory 类 — 目录操作(静态方法)#

// 获取目录下所有文件
string[] files = Directory.GetFiles(@"D:\MyFolder");

// 获取所有子目录
string[] dirs = Directory.GetDirectories(path);

// 创建目录
Directory.CreateDirectory(path);

// 删除目录(空目录)
Directory.Delete(path);

// 删除非空目录(递归删除所有内容)
Directory.Delete(path, true);

递归获取所有子目录#

public void GetDic(string path)
{
    string[] dirs = Directory.GetDirectories(path);
    foreach (var s in dirs)
    {
        textBox1.Text += s + "\r\n";
        if (Path.GetDirectoryName(s).Length > 0)
        {
            GetDic(s);   // 递归:继续往下找
        }
    }
}

实战:遍历目录所有文件#

private void button7_Click(object sender, EventArgs e)
{
    textBox1.Clear();
    string[] files = Directory.GetFiles($@"{textBox4.Text}");
    foreach (string file in files)
    {
        textBox1.Text += file + "\r\n";
    }
}

3. DirectoryInfo 类 — 目录对象方式#

DirectoryInfo 是面向对象的用法,先创建对象再操作,还能访问目录的详细信息:

// 创建对象
DirectoryInfo dir = new DirectoryInfo(path);

// 删除(true = 递归删除非空目录)
dir.Delete(true);

// 属性信息
Console.WriteLine("名称:" + dir.Name);
Console.WriteLine("完整路径:" + dir.FullName);
Console.WriteLine("创建时间:" + dir.CreationTime);
Console.WriteLine("访问时间:" + dir.LastAccessTime);
Console.WriteLine("写入时间:" + dir.LastWriteTime);

// 列出子目录
DirectoryInfo[] subDirs = dir.GetDirectories();

实战:删除整个目录#

// 用 DirectoryInfo 删除(递归)
DirectoryInfo directory = new DirectoryInfo(textBox4.Text);
directory.Delete(true);

4. 静态类 vs 实例类#

对比 File / Directory FileInfo / DirectoryInfo
使用方式 File.方法(路径) new FileInfo(路径).方法()
多次操作 每次都要写路径 对象保存路径,复用
属性访问 有(创建时间等)
适用 一次性简单操作 需要多次操作或读属性

💡 第一阶段已经学过 10-IO操作 目录下的 File与FileInfoDirectory与DirectoryInfo 笔记,本笔记是 WinForm 阶段的实战补充。


相关笔记#