news 2026/5/7 23:10:17

C#之文件读写操作以及排序列表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#之文件读写操作以及排序列表

一、排序列表

排序列表:对键进行排序的集合,访问时候可以通过键进行访问,也可以索引值进行访问,
可以当成是ArrayList和字典的结合 关键词 SortedList

条件建立:

SortedList sort = new SortedList(); sort.Add(10, "张三"); sort.Add(5, "李四");

通过键进行访问

Console.WriteLine(sort[10]); //张三

通过索引值访问

Console.WriteLine(sort.GetByIndex(0));//李四

清空列表

sort.Clear();

指定键移除

sort.Remove(10);

遍历 当遍历操作只有一句的话可以省略{}

foreach (DictionaryEntry item in sort) Console.WriteLine(item.Value);

二、File文件

File:文件读写操作的类,主要包括功能:文件读写、文件的复制、剪切、删除、创建等操作

1 Create() 创建一个文件流,指定文件位置

FileStream fs = File.Create(@"C:\Users\Administrator\Desktop\1.txt");

上述是绝对路径,可以是相对路径1.txt 默认的情况在bin-->debug文件下

FileStream fs = File.Create(@"1.txt");

默认路径的上一级路径

FileStream fs = File.Create(@"../1.txt");

2 Copy把文件从参数1路径复制到参数2这个路径上

File.Copy(@"./2.txt", @"../2.txt");

3 Exists() 判断路径下是否有文件

if (!File.Exists(@"../2.txt")) // 不存在下再去复制 { File.Copy(@"./2.txt", @"../2.txt"); }

4 Move() 从参数1路径文件剪切到参数2路径上

File.Move(@"./2.txt", @"../3.txt");

5 删除指定路径下文件

File.Delete(@"../3.txt");

6 WriteAllText();以字符串的方法进行写入路径,参数1路径 参数2写入内容

File.WriteAllText("1.txt", "哈喽,欢迎来到C#世界"); string s = File.ReadAllText("1.txt",Encoding.UTF8); //参数1文件路径 参数2是编码格式

7 WriteAllBytes() 以字节的方法进行写入 参数1路径 参数2字节数组、

Encoding.UTF8.GetStrings() 把字节数组转成字符串
Encoding.UTF8.GetBytes() 把字符串转成字节数组

byte[] bs = Encoding.UTF8.GetBytes("举头望明月"); File.WriteAllBytes("1.txt", bs);

8 WriteAllLines() 写换行的格式进行写入

string[] cs = new string[] {"你好","how are you","fine thank you","and you" }; File.WriteAllLines(@"1.txt",cs); string[] sss = File.ReadAllLines(@"1.txt");//读取文本以换行的方法 foreach (string item in sss) { Console.WriteLine(item); }

9 AppendAllText() 追加文本

File.AppendAllText(@"1.txt","how old are you");

三、FileStream文件流

FileStream 文件流
参数1 指定文件流路径
参数2 指定打开文件模式:FileMode.Open 打开现有的文件 ,如果没有文件,抛出异常
FileMode.Create 如果存在1.txt 会覆盖原先的文件,如果没有创建一个新的文件
FileMode.OpenOrCreate, 如果存在则打开,如果不存在则新建一个

参数3: FileAccess文件权限:
FileAccess.ReadWrite 具备文件读写权限,
FileAccess.Read:只读权限,
FileAccess.Write写入权限

FileStream fs = new FileStream(@"1.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);

写入字符串

//-----------------写入字符串--------------------------- string s = "你好三角洲,加强露娜"; byte[] bs = Encoding.UTF8.GetBytes(s);// 把字符串转成字节数组 fs.Write(bs, 0, bs.Length); // 参数1 写入字节数组 ,参数2是写入开始位置 参数3 写入的长度 fs.Flush();//清空缓存区 确保文件流写入文件中 fs.Close();//关闭文件流 fs = new FileStream(@"1.txt", FileMode.Open, FileAccess.ReadWrite);// 严格来说 读取的时候文件的打开方式选成Open byte[] buffer = new byte[fs.Length];//字节数组不能写太大 也不能写太小, fs.Read(buffer, 0, buffer.Length); //把fs里面的数据读取到指定字节数组里面 从0开始读取,读取参数3长度 Console.WriteLine(Encoding.UTF8.GetString(buffer));// 转成字符串打印 fs.Close();

四、二进制数据读写从操作

二进制原始数据读写操作 通过BinaryReader 和BinaryWriter进行实现,写入和读取性能比 fileStream性能要高,写入数据类可以是各种类型 关键字 BinaryReader和BinaryWriter
1创建文件流,FileStream一般用于作为其他类读写操作的文件流

FileStream fs = new FileStream(@"1.txt", FileMode.Create, FileAccess.ReadWrite);

2 创建写入流

BinaryWriter bw = new BinaryWriter(fs);

3 写入内容 传入指定的类型

bw.Write(100); //写入整型数据 bw.Write(true); //写入一个bool数据 bw.Write("你好对对对"); //字符串类型 bw.Write(10.2); // 浮点类型 //写入数据:传递一个字节数组 bw.Write(new UTF8Encoding().GetBytes("阿巴阿巴阿巴")); bw.Flush(); // 确保w完整写入 bw.Close(); // 关闭写入流 fs.Close(); // 关闭文件流

-读取文件数据

//创建文件流对象 fs = new FileStream(@"1.txt", FileMode.Open, FileAccess.ReadWrite); //创建一个二进制读取对象 BinaryReader br = new BinaryReader(fs); //一般不会采用单独去读一个数据 //Console.WriteLine(br.ReadInt32()); // 读取整型的 10 //Console.WriteLine(br.ReadBoolean()); // // Console.WriteLine(br.ReadString()); //Console.WriteLine(br.ReadDouble()); //读取的时候一般采用while进行循环去读 byte[] buffer = new byte[fs.Length]; while (br.Read(buffer, 0, buffer.Length) > 0) // br.Read(buffer, 0, buffer.Length) 等于0 证明读取完了, { Console.WriteLine(Encoding.UTF8.GetString(buffer)); } br.Close();//释放读取对象 fs.Close(); //释放文件流

总结

BinaryWriter 和 BinaryReader

第一种写入读取:单独写入指定类型数据时候 ,通过bw.Write(100); 通过br.ReadInt32()进行单独读取 第二种写入读取 :传递一个字节数组, bw.Write(new UTF8Encoding().GetBytes("阿巴阿巴阿巴")); 通过使用while进行多次读取 byte[] buffer = new byte[fs.Length]; while (br.Read(buffer, 0, buffer.Length) > 0) { Console.WriteLine(Encoding.UTF8.GetString(buffer)); }

FileStream

1 fs.WriteByte() 写入单个字节 ,通过fs.ReadByte() 读取单个字节 2 写入字节数组 string s = "你好欢迎来到C#世界";byte[] bs = Encoding.UTF8.GetBytes(s); fs.Write(bs, 0, bs.Length); 读取字节数组 byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length);

File

File.WriteAllText("") File.ReadAllText() File.WriteAllLines(new string[]{"1","2"}) 字符串数组 File.WriteAllBytes(Encoding.UTF8.GetBytes("三角洲加强露娜")) 传递字节数组
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 12:25:36

Unlock Music音乐解锁工具:让加密音乐重获自由

Unlock Music音乐解锁工具:让加密音乐重获自由 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gitc…

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

什么值得买自动化签到系统:从零搭建到持续运行完整攻略

想要告别每日手动签到什么值得买的繁琐操作吗?通过本教程,你将掌握搭建自动化签到系统的完整流程,实现积分自动获取,让签到变得轻松高效。什么值得买自动化签到系统能够帮助用户实现每日自动签到、积分自动累积,是提升…

作者头像 李华
网站建设 2026/5/4 5:01:30

终极指南:如何重新设置IDM 30天试用期(简单三步搞定)

想要长期使用功能强大的IDM下载管理工具,却受限于30天试用期?这款专业的IDM试用设置工具能帮你解决这个困扰,让你无需其他操作即可继续享受高速下载体验。本文将详细介绍如何下载安装、环境检测和一键设置,让你轻松掌握IDM试用设置…

作者头像 李华
网站建设 2026/5/6 19:23:41

AutoDock Vina分子对接完全手册:从基础操作到高级应用

AutoDock Vina作为分子对接领域的高效工具,为药物发现和生物分子研究提供了快速可靠的预测能力。本手册将带您系统掌握这一开源软件的完整使用方法,从简单案例到复杂场景,逐步提升您的分子对接技能水平。 【免费下载链接】AutoDock-Vina Auto…

作者头像 李华
网站建设 2026/5/7 12:47:05

华为光猫配置解密工具:3步完成专业级网络运维分析

华为光猫配置解密工具:3步完成专业级网络运维分析 【免费下载链接】HuaWei-Optical-Network-Terminal-Decoder 项目地址: https://gitcode.com/gh_mirrors/hu/HuaWei-Optical-Network-Terminal-Decoder 华为光猫配置解密工具是一款专为网络技术人员设计的强…

作者头像 李华
网站建设 2026/5/7 14:39:00

告别命令行恐惧:ExifToolGui可视化元数据管理终极指南

告别命令行恐惧:ExifToolGui可视化元数据管理终极指南 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui 还在为复杂的ExifTool命令行参数头疼吗?作为你的技术伙伴,今天我将…

作者头像 李华