当前位置: 首页 > 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.jsqmd.com/news/88398/

相关文章:

  • 联想打印机维修与故障排除实用指南
  • P9345 夕阳西下几时回 解题报告
  • 专网自实现域名系统的深度可行性研究与实施规划报告
  • 本地部署开源可视化界面开发工具 Node-RED 并实现外部访问( Linux 版本)
  • 实习面试题-ZooKeeper 原理面试题
  • T321484 刁钻的客人 私题题解
  • CF1891B Deja Vu 解题报告
  • 本地部署开源可视化界面开发工具 Node-RED 并实现外部访问( Windows 版本)
  • U249090 密码门 私题题解
  • 2025企业AI部署革命:T-pro-it-2.0-GGUF如何让本地化门槛直降60%?
  • JSP如何实现大文件分片上传与多线程上传?
  • 三相共直流母线式光储VSG/虚拟同步机逆变器模型仿真:离散化快速运行与前级PV最大功率追踪控制
  • Sed 例程大全
  • 【Vue3】 中 ref 与 reactive:状态与模型的深入理解
  • 实习面试题-Zookeeper 面试题
  • 双机并联虚拟同步发电机仿真模型:均分负载与优质波形输出,可拓展自适应与光伏储能技术
  • 清除企业不良记录的通知
  • Grep 例程大全
  • python环境及pip的操作
  • 管理Linux的联网
  • HTTP协议在JSP大附件上传中如何优化性能?
  • 网页前端如何通过JSP实现大文件秒传功能?
  • Ursa.Avalonia样式系统终极指南:5大技巧助你构建企业级UI
  • Asio应用(高级):构建高性能、安全、跨平台的网络系统
  • 实习面试题-Spark SQL 面试题
  • CF958A1 Death Stars (easy) 解题报告
  • PS 例程大全
  • wangEditor导入excel数据到html富文本编辑
  • 如何利用JSP实现信创环境的大文件上传?
  • 实习面试题-Kotlin 面试题