C# File 类(文件操作)和 Directory 类(文件夹 / 目录操作)的常用方法大全

一、File 类(文件操作)

File 类提供静态方法,用于操作文件(创建、删除、读写、复制、移动等),无需实例化,直接通过 File.XXX() 调用。

方法分类方法签名说明示例
判断存在static bool Exists(string path)判断指定路径的文件是否存在(路径必须包含文件名 + 扩展名)。bool hasFile = File.Exists(@"C:\test\file.txt");
创建文件static FileStream Create(string path)创建空白文件,返回 FileStream(需手动关闭或用 using)。using (var fs = File.Create(@"C:\test\newFile.txt")) { }
static void WriteAllText(string path, string contents)直接创建文件并写入文本(若文件存在则覆盖)。File.WriteAllText(@"C:\test\log.txt", "Hello World");
static void WriteAllLines(string path, IEnumerable<string> contents)创建文件并写入多行文本(每行一个元素)。File.WriteAllLines(@"C:\test\list.txt", new[] { "a", "b" });
读取文件static string ReadAllText(string path)读取文件所有内容为字符串(适合小文件)。string content = File.ReadAllText(@"C:\test\log.txt");
static string[] ReadAllLines(string path)读取文件所有行到字符串数组。string[] lines = File.ReadAllLines(@"C:\test\list.txt");
static byte[] ReadAllBytes(string path)读取文件所有内容为字节数组(适合二进制文件,如图片、音频)。byte[] data = File.ReadAllBytes(@"C:\test\image.png");
复制文件static void Copy(string sourceFileName, string destFileName)复制文件到目标路径(目标文件不存在时)。File.Copy(@"C:\test\src.txt", @"C:\test\dest\copy.txt");
static void Copy(string source, string dest, bool overwrite)复制文件,overwrite: true 表示覆盖已存在的目标文件。File.Copy(@"C:\a.txt", @"C:\b.txt", overwrite: true);
移动 / 重命名static void Move(string sourceFileName, string destFileName)移动文件到新路径(可跨目录),或重命名文件(同目录下)。File.Move(@"C:\test\old.txt", @"C:\new\renamed.txt");
删除文件static void Delete(string path)删除指定文件(若文件不存在则报错,建议先判断 Exists)。if (File.Exists(path)) File.Delete(path);
获取属性static FileAttributes GetAttributes(string path)获取文件属性(如只读、隐藏、系统文件等)。var attr = File.GetAttributes(@"C:\test\file.txt");
static void SetAttributes(string path, FileAttributes attributes)设置文件属性(如设置为只读:FileAttributes.ReadOnly)。File.SetAttributes(path, FileAttributes.ReadOnly);
时间信息static DateTime GetCreationTime(string path)获取文件创建时间。var createTime = File.GetCreationTime(path);
static DateTime GetLastWriteTime(string path)获取文件最后修改时间。var writeTime = File.GetLastWriteTime(path);

二、Directory 类(文件夹 / 目录操作)

Directory 类提供静态方法,用于操作文件夹(创建、删除、查询、移动等),同样直接通过 Directory.XXX() 调用。

方法分类方法签名说明示例
判断存在static bool Exists(string path)判断指定路径的文件夹是否存在(路径为目录路径,不含文件名)。bool hasDir = Directory.Exists(@"C:\test\folder");
创建文件夹static DirectoryInfo CreateDirectory(string path)创建文件夹(若父目录不存在则自动创建多级目录)。Directory.CreateDirectory(@"C:\test\new\folder");
删除文件夹static void Delete(string path)删除空文件夹(若文件夹非空则报错)。if (Directory.Exists(path)) Directory.Delete(path);
static void Delete(string path, bool recursive)删除文件夹,recursive: true 表示强制删除所有子文件和子文件夹。Directory.Delete(@"C:\test\old", recursive: true);
获取文件列表static string[] GetFiles(string path)获取目录下所有文件的路径(不含子目录)。string[] files = Directory.GetFiles(@"C:\test");
static string[] GetFiles(string path, string searchPattern)按搜索模式筛选文件(如 *.txt 表示所有 txt 文件)。string[] txtFiles = Directory.GetFiles(@"C:\test", "*.txt");
static string[] GetFiles(string path, string pattern, SearchOption opt)SearchOption.AllDirectories 表示包含子目录文件。var allTxt = Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories);
获取子目录列表static string[] GetDirectories(string path)获取当前目录下的所有子文件夹路径。string[] subDirs = Directory.GetDirectories(@"C:\test");
获取根目录static string GetDirectoryRoot(string path)获取路径的根目录(如 C:\)。string root = Directory.GetDirectoryRoot(@"C:\test\file.txt");
移动 / 重命名static void Move(string sourceDirName, string destDirName)移动文件夹到新路径,或重命名文件夹(同目录下)。Directory.Move(@"C:\oldDir", @"C:\newDir");
获取父目录static string GetParent(string path)获取父目录路径(若为根目录则返回 null)。string parent = Directory.GetParent(@"C:\test\sub").FullName;
时间信息static DateTime GetCreationTime(string path)获取文件夹创建时间。var createTime = Directory.GetCreationTime(path);
static DateTime GetLastWriteTime(string path)获取文件夹最后修改时间。var writeTime = Directory.GetLastWriteTime(path);

三、注意事项

  1. 路径格式

    • 文件路径必须包含文件名和扩展名(如 C:\a.txt),目录路径只需到文件夹(如 C:\test)。
    • 路径分隔符可用 \(需转义为 \\)或 /(如 @"C:/test/file.txt" 或 C:/test/file.txt)。
  2. 异常处理

    • 操作文件 / 目录时可能抛出异常(如权限不足、文件被占用),建议用 try-catch 包裹:
      try { File.Delete(path); }
      catch (IOException ex) { Console.WriteLine("文件被占用:" + ex.Message); }
      catch (UnauthorizedAccessException ex) { Console.WriteLine("无权限:" + ex.Message); }
      
  3. 大文件处理

    • ReadAllText/WriteAllText 适合小文件,大文件建议用 FileStream 流式读写(避免内存溢出)。
  4. 跨平台兼容

    • .NET Core/.NET 5+ 中,File 和 Directory 类支持 Windows、Linux、macOS,但路径格式需注意(如 Linux 用 / 分隔)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值