news 2026/2/2 21:17:13

C#之文件读取

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#之文件读取

Path

Path类位于System.IO命名空间,是一个静态类,可以用来操作路径的每一个字段

  1. 路径

    相对路径: 程序运行(.exe文件)文件所在目录为参考点

    • ./'': 从参考点目录下查找, 当前目录

    • ../上级目录 参考点目录上级目录

      //参考点: D:\2511班\code\code_12_10\app1\bin\Debug // string relativePath = "./app1.pdb"; //D:\2511班\code\code_12_10\app1\bin\Debug\app1.pdb ​ string relativePath1 = "../app1.pdb"; //D:\2511班\code\code_12_10\app1\bin\app1.pdb ​

      绝对路径: 参考点: 盘符

      路径分隔符

      // 目录分隔符(Windows是\,Linux/macOS是/) char dirSeparator = Path.DirectorySeparatorChar; Console.WriteLine(dirSeparator); // 替代目录分隔符(通常是/) char altSeparator = Path.AltDirectorySeparatorChar; Console.WriteLine(altSeparator); // 路径分隔符(用于PATH环境变量,Windows是;,Linux/macOS是:) char pathSeparator = Path.PathSeparator; Console.WriteLine(pathSeparator);

Path常用方法

1.Path.Combine()

作用:拼接多个路径片段,自动处理路径分隔符(\//),避免手动拼接出现格式错误。

string path1 = @"C:\Users"; string path2 = "test"; string path3 = "demo.txt"; string fullPath = Path.Combine(path1, path2, path3); // 结果:C:\Users\test\demo.txt
2.Path.GetFileName()

作用:从完整路径中提取文件名 + 扩展名

string path = @"C:\Users\test\demo.txt"; string fileName = Path.GetFileName(path); // 结果:demo.txt
3.Path.GetFileNameWithoutExtension()

作用:提取文件名(不含扩展名)。

string path = @"C:\Users\test\demo.txt"; string fileName = Path.GetFileNameWithoutExtension(path); // 结果:demo
4.Path.GetExtension()

作用:提取文件扩展名(包含.)。

string path = @"C:\Users\test\demo.txt"; string ext = Path.GetExtension(path); // 结果:.txt
5.Path.GetDirectoryName()

作用:提取路径中的目录部分(不含文件名)。

string path = @"C:\Users\test\demo.txt"; string dir = Path.GetDirectoryName(path); // 结果:C:\Users\test

File

File类是 C# 中用于处理文件操作的静态类,位于System.IO命名空间。它提供了创建、复制、删除、移动和打开文件的静态方法

File常用方法

1. 文件创建
File.Create(string path)

作用:创建指定路径的空文件(若文件已存在,会覆盖并清空原有内容),返回FileStream流(需手动关闭或用using包裹)。

using (FileStream fs = File.Create(@"C:\test\demo.txt")) { // 可通过 fs 写入内容(可选) byte[] content = System.Text.Encoding.UTF8.GetBytes("初始内容"); fs.Write(content, 0, content.Length); }
2. 文件读取
File.ReadAllText(string path)

作用:一次性读取文件所有文本内容(返回字符串),适合小文件(大文件易内存溢出)。

string content = File.ReadAllText(@"C:\test\demo.txt", Encoding.UTF8); Console.WriteLine(content); // 输出文件全部文本
File.ReadAllLines(string path)

作用:按行读取文件内容,返回字符串数组(每行对应一个元素)。

string[] lines = File.ReadAllLines(@"C:\test\demo.txt", Encoding.UTF8); foreach (string line in lines) { Console.WriteLine($"行内容:{line}"); }
File.ReadAllBytes(string path)

作用:读取文件的字节数组(适合非文本文件,如图片、音频)。

byte[] bytes = File.ReadAllBytes(@"C:\test\image.png"); // 可将字节数组写入新文件(复制图片) File.WriteAllBytes(@"C:\test\image_copy.png", bytes);
3. 文件写入
File.WriteAllText(string path, string content)

作用:将字符串内容写入文件(若文件不存在则创建,若存在则覆盖原有内容)。

string content = "这是要写入的文本内容"; File.WriteAllText(@"C:\test\demo.txt", content, Encoding.UTF8);
File.WriteAllLines(string path, IEnumerable<string> contents)

作用:将字符串数组 / 集合按行写入文件(覆盖原有内容)。

string[] lines = { "第一行", "第二行", "第三行" }; File.WriteAllLines(@"C:\test\demo.txt", lines, Encoding.UTF8);
File.AppendAllText(string path, string content)
File.AppendAllText(string path, string content)

作用:追加文本到文件末尾(不覆盖原有内容,文件不存在则创建)。

File.AppendAllText(@"C:\test\demo.txt", "\n追加的内容", Encoding.UTF8);
File.AppendAllLines(string path, IEnumerable<string> contents)

作用:追加多行文本到文件末尾。

string[] newLines = { "追加行1", "追加行2" }; File.AppendAllLines(@"C:\test\demo.txt", newLines, Encoding.UTF8);
4. 文件复制
File.Copy(string sourceFileName, string destFileName)

作用:复制文件到目标路径(若目标文件已存在,默认抛异常)。重载File.Copy(source, dest, bool overwrite)overwrite=true允许覆盖目标文件)。

// 复制文件,允许覆盖目标文件 File.Copy(@"C:\test\demo.txt", @"C:\test\demo_copy.txt", true);
5.文件移动/重命名
File.Move(string sourceFileName, string destFileName)

作用:移动文件到目标路径(可跨目录,甚至修改文件名;目标文件已存在则抛异常)。

// 移动并改名:demo.txt → new_demo.txt File.Move(@"C:\test\demo.txt", @"C:\test\new_demo.txt");
6.文件删除
File.Delete(string path)

作用:删除指定文件(若文件不存在,不会抛异常)。

File.Delete(@"C:\test\demo_copy.txt");
7. 文件属性 / 状态判断
File.Exists(string path)

作用:判断文件是否存在(最常用的前置校验)。

if (File.Exists(@"C:\test\demo.txt")) { Console.WriteLine("文件存在"); } else { Console.WriteLine("文件不存在"); }

Directory

Directory是 C# 中用于操作目录(文件夹)的静态类,位于System.IO命名空间。它提供了创建、移动、删除目录以及获取目录信息的方法。

1. 目录创建
Directory.CreateDirectory(string path)

作用:创建指定路径的目录(支持多级目录创建,比如路径包含不存在的父目录时,会自动创建所有层级);若目录已存在,不会抛异常,直接返回已存在的目录信息。

// 创建单级目录 Directory.CreateDirectory(@"C:\test"); ​ // 创建多级目录(test 和 subtest 都不存在时,会同时创建) Directory.CreateDirectory(@"C:\test\subtest\demo");
2. 目录判断与信息获取
Directory.Exists(string path)

作用:判断指定路径的目录是否存在(最常用的前置校验)。

string dirPath = @"C:\test"; if (Directory.Exists(dirPath)) { Console.WriteLine("目录存在"); } else { Console.WriteLine("目录不存在,即将创建"); Directory.CreateDirectory(dirPath); }
3.目录信息获取

Directory.GetCurrentDirectory()

作用:获取当前程序的工作目录(注意:并非程序可执行文件所在目录,而是运行时的工作路径)。

string currentDir = Directory.GetCurrentDirectory(); Console.WriteLine($"当前工作目录:{currentDir}");
Directory.GetFiles(string path)

作用:获取指定目录下的所有文件路径(仅一级,不包含子目录),返回字符串数组。

重载GetFiles(path, searchPattern)(按通配符筛选,如*.txt)、GetFiles(path, searchPattern, SearchOption)(指定是否遍历子目录)。

string[] txtFiles = Directory.GetFiles(@"C:\test", "*.txt"); foreach (string file in txtFiles) { Console.WriteLine($"txt文件:{file}"); } ​ // 获取 C:\test 及子目录下所有 .docx 文件 string[] docxFiles = Directory.GetFiles( @"C:\test", "*.docx", SearchOption.AllDirectories );
Directory.GetDirectories(string path)

作用:获取指定目录下的所有子目录路径(仅一级),返回字符串数组。重载:支持通配符筛选和遍历子目录(同GetFiles)。

// 获取 C:\test 下所有子目录 string[] subDirs = Directory.GetDirectories(@"C:\test"); foreach (string dir in subDirs) { Console.WriteLine($"子目录:{dir}"); }
Directory.GetParent(string path)

作用:获取指定路径的父目录信息(返回DirectoryInfo对象)。

DirectoryInfo parentDir = Directory.GetParent(@"C:\test\subtest\demo"); Console.WriteLine($"父目录路径:{parentDir.FullName}"); // 输出:C:\test\subtest
Directory.GetCreationTime(string path)

作用:获取目录的创建时间(同理还有GetLastWriteTime/GetLastAccessTime,分别对应最后修改、最后访问时间)。

DateTime createTime = Directory.GetCreationTime(@"C:\test"); Console.WriteLine($"目录创建时间:{createTime}");
3. 目录移动 / 重命名
Directory.Move(string sourceDirName, string destDirName)

作用:移动目录到目标路径(可同时重命名目录;目标路径不能已存在,否则抛异常;支持跨磁盘分区吗?不支持,跨分区需先复制再删除)。

// 移动并重命名:C:\test\subtest → C:\newtest\subtest_new Directory.Move(@"C:\test\subtest", @"C:\newtest\subtest_new");
4. 目录删除
Directory.Delete(string path)

作用:删除指定目录(仅删除空目录,若目录非空则抛异常)。重载Directory.Delete(path, bool recursive)recursive=true时,递归删除目录及所有子目录、文件)。

// 删除空目录
Directory.Delete(@"C:\test\emptyDir");

// 递归删除非空目录(包含所有子目录和文件)
Directory.Delete(@"C:\test", true);

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/25 17:31:27

YSL口红html+css 6页(黑色老版)

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…

作者头像 李华
网站建设 2026/1/27 1:43:29

基于vue的公司员工和客户管理系统开发_372p49sf_springboot php python nodejs

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/2/1 14:09:49

2025年木质台历供应商实力排行榜

随着办公环境与生活品质的提升&#xff0c;木质台历作为兼具实用性与装饰性的办公用品&#xff0c;市场需求持续增长。2025年&#xff0c;木质台历行业呈现多元化发展趋势&#xff0c;消费者对产品品质、设计创新及环保属性的要求不断提高。本文通过对行业主流供应商的深入调研…

作者头像 李华
网站建设 2026/1/28 11:57:46

50、Mono应用开发与Linux机器安全防护

Mono应用开发与Linux机器安全防护 1. 基于Mono库构建应用 Ubuntu系统预装了多个基于Mono构建的程序,如Tomboy和Beagle,同时还附带了一系列支持.NET的库,部分库可能之前就已安装。Mono的优势在于能让开发者轻松地基于这些库进行开发,只需使用 using 语句导入库,即可开始…

作者头像 李华
网站建设 2026/1/28 10:21:58

设计分享|51单片机INT1中断计数

目录 具体实现功能 设计介绍 51单片机简介 设计思路 设计内容 程序&#xff08;Keil5&#xff09; 仿真实现&#xff08;protues8.7&#xff09; 具体实现功能 利用51单片机INT1中断计数实现按键计数&#xff0c;并用五位数码管显示。 设计介绍 51单片机简介 51单片是…

作者头像 李华
网站建设 2026/2/1 6:00:20

PythonREPL、Search API

day30: 了解部分内置工具&#xff08;PythonREPL、Search API&#xff09;的作用 一、 Agent 一定要有「内置工具」的原因 一句话结论&#xff1a; LLM ≠ 会做事&#xff0c;Tool 才是“手”LLM 的天然短板&#xff1a;能力问题数学易算错时间不知道现在实时信息不知道代码执行…

作者头像 李华