一、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); |
三、注意事项
-
路径格式:
- 文件路径必须包含文件名和扩展名(如
C:\a.txt),目录路径只需到文件夹(如C:\test)。 - 路径分隔符可用
\(需转义为\\)或/(如@"C:/test/file.txt"或C:/test/file.txt)。
- 文件路径必须包含文件名和扩展名(如
-
异常处理:
- 操作文件 / 目录时可能抛出异常(如权限不足、文件被占用),建议用
try-catch包裹:try { File.Delete(path); } catch (IOException ex) { Console.WriteLine("文件被占用:" + ex.Message); } catch (UnauthorizedAccessException ex) { Console.WriteLine("无权限:" + ex.Message); }
- 操作文件 / 目录时可能抛出异常(如权限不足、文件被占用),建议用
-
大文件处理:
ReadAllText/WriteAllText适合小文件,大文件建议用FileStream流式读写(避免内存溢出)。
-
跨平台兼容:
- .NET Core/.NET 5+ 中,
File和Directory类支持 Windows、Linux、macOS,但路径格式需注意(如 Linux 用/分隔)。
- .NET Core/.NET 5+ 中,
和 Directory 类(文件夹 目录操作)的常用方法大全&spm=1001.2101.3001.5002&articleId=153835580&d=1&t=3&u=088a000733cd41aa90ee3d30d977e49f)
3088

被折叠的 条评论
为什么被折叠?



