news 2026/1/21 18:57:48

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进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/17 7:04:27

毕设 stm32 RFID员工打卡门禁系统(源码+硬件+论文)

文章目录 0 前言1 主要功能2 硬件设计(原理图)3 核心软件设计4 实现效果5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉…

作者头像 李华
网站建设 2026/1/20 4:01:25

全球最大、最领先的吉利全球全域安全中心正式发布

12月12日&#xff0c;吉利全球全域安全中心正式发布&#xff0c;并一举创下“全球最大的汽车安全试验室”、“全球最长的室内汽车碰撞测试跑道”、“全球最大的汽车环境风洞试验室”、“全球最大的任意角度汽车碰撞测试区&#xff08;0-180&#xff09;”、“全球测试功能最多的…

作者头像 李华
网站建设 2026/1/22 2:22:52

Android中Compose系列之按钮Button

文章目录前言一、Button的基本使用1.Button2.扩展TextButtonOutlinedButtonIconButton二、Button属性前言 Button是Compose中作为按钮提供交互的控件&#xff0c;它本身属性自带onClick的点击处理&#xff0c;不需要使用Modifiter中的点击功能&#xff0c;目前最新版默认按钮风…

作者头像 李华
网站建设 2026/1/17 18:38:38

wangEditor导入excel数据到html富文本编辑

在数字化浪潮的推动下&#xff0c;省博物馆的网站已成为展示文化瑰宝、传播历史文化的重要窗口。为了进一步提升网站内容更新的效率与质量&#xff0c;满足多样化信息展示需求&#xff0c;现针对网站后台编辑器提出增加 Word 导入功能的需求&#xff0c;具体说明如下&#xff1…

作者头像 李华
网站建设 2026/1/16 1:24:31

JSP中如何利用分块技术实现百万文件上传优化?

大文件传输系统技术方案 需求分析与技术挑战 作为深圳软件有限公司的项目负责人&#xff0c;我们深入分析了贵公司对大文件传输系统的需求&#xff0c;主要面临以下技术挑战&#xff1a; 超大文件处理&#xff1a;单文件100G的高效传输文件夹结构保留&#xff1a;完整保留层…

作者头像 李华