当前位置: 首页 > news >正文

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);

http://www.cnnetsun.cn/news/52013.html

相关文章:

  • 毕设 stm32 RFID员工打卡门禁系统(源码+硬件+论文)
  • 全球最大、最领先的吉利全球全域安全中心正式发布
  • Android中Compose系列之按钮Button
  • wangEditor导入excel数据到html富文本编辑
  • 光伏电池simulink仿真模型 光伏电池建模仿真 包括改变温度 改变辐照度的特性分析 模型可...
  • JSP中如何利用分块技术实现百万文件上传优化?
  • 60、Ubuntu 安装硬件规划全攻略
  • 2025年12月— CET四六级答案
  • 锐捷RGSP | 端口安全技术原理与应用
  • Cameralink采集卡软件EspeedGrab使用讲解:4图像处理
  • 31、脚本编程进阶:Here文档、自上而下设计与流程控制
  • 信捷XDH系列PLC的追剪/飞剪/电子凸轮程序模板
  • 【大模型】-LangChain--stream流式同步异步
  • 兜兜英语每日短语:逃单篇
  • 计算机毕业设计springboot汽车智慧检修系统 基于SpringBoot的智能汽车故障预测与维修管理平台 融合IoT的SpringBoot车辆健康监测与维修决策系统
  • python3
  • 【3D图像技术分析与实现】Apple Vision Pro三维成像技术栈深度解析
  • 经典算法题详解之统计重复个数(三)
  • 移动应用开发实验室大一上考核
  • 云数据库服务(如AWS RDS)的优势和考虑因素?
  • 【设计模式|第四篇】适配器模式:让不兼容的接口协同工作
  • asgiref终极指南:高效解决Python异步通信难题
  • 医学影像深度学习知识点总结
  • 从零到一:自动化3D建模的免代码解决方案
  • Kali中生成被控端
  • 13、Linux 文本编辑与命令操作实用指南
  • 20、Linux 备份全攻略
  • 22、Debian系统管理与安全保障全解析
  • 32、Debian变体与基于Debian的其他操作系统
  • 50、无线传感器网络部署方案与加密算法研究