news 2026/4/17 8:32:26

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/4/18 6:23:45

基于vue的健身房管理系统_tgk4bbwq_springboot php python nodejs

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

作者头像 李华
网站建设 2026/4/18 5:23:08

HTTP协议在JSP大附件上传中如何优化性能?

大文件上传系统开发指南&#xff08;基于原生JSSpringBoot&#xff09; 老铁&#xff0c;先别慌&#xff01;让我帮你捋一捋这个"毕业设计找工作"双重大礼包 兄弟&#xff0c;看到你的需求我仿佛看到了当年被毕业设计支配的恐惧。不过别担心&#xff0c;我这个&quo…

作者头像 李华
网站建设 2026/4/3 7:50:10

JAVA中如何利用JSP实现视频文件的分片上传?

企业级大文件安全传输解决方案 作为广东IT行业软件公司的项目负责人&#xff0c;针对贵司的大文件传输需求&#xff0c;我提供以下专业解决方案。本方案完全满足高稳定性、高安全性要求&#xff0c;支持100G级别文件传输&#xff0c;并具备完善的信创国产化适配能力。 核心功…

作者头像 李华
网站建设 2026/4/18 5:23:07

JSP中如何利用分段技术实现超大附件上传?

大文件上传系统开发指南&#xff08;兼容IE8的WebUploader实现&#xff09; 项目概述 大家好&#xff0c;我是广东的一名.NET程序员&#xff0c;最近接了一个让人头大的外包项目。客户要求实现一个支持20G大文件上传的系统&#xff0c;还要兼容IE8这种古董浏览器&#xff0c;…

作者头像 李华
网站建设 2026/4/16 14:37:04

JSP如何支持多平台兼容的大文件分片上传?

大文件上传下载系统开发指南 项目概述 老哥&#xff0c;你这个需求可真是够硬核的&#xff01;20G文件上传、文件夹层级保留、断点续传、加密传输存储&#xff0c;还要兼容IE8&#xff0c;预算才100块…这活儿不简单啊&#xff01;不过既然你找到我了&#xff0c;咱们就一起啃…

作者头像 李华
网站建设 2026/4/17 16:44:27

Qt面试题合集(二)

Qt面试合集二 3.信号发出后槽函数会立即执行吗&#xff1f; 这是由信号槽的连接方式(Connection Type)和线程归属决定的。 1. 核心概念&#xff1a;Qt 的 4 种连接方式 Qt 通过QObject::connect()函数建立信号槽连接时&#xff0c;可指定第 5 个参数&#xff08;连接类型&#…

作者头像 李华