news 2026/6/10 21:13:50

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/6/10 14:04:33

GeoJSON.io 快速上手完整指南:零基础掌握地理数据编辑

GeoJSON.io 快速上手完整指南:零基础掌握地理数据编辑 【免费下载链接】geojson.io A quick, simple tool for creating, viewing, and sharing spatial data 项目地址: https://gitcode.com/gh_mirrors/ge/geojson.io GeoJSON.io 是一款基于浏览器的免费地理…

作者头像 李华
网站建设 2026/6/9 22:47:37

Vue3-Treeselect树形选择器完整使用指南

Vue3-Treeselect树形选择器完整使用指南 【免费下载链接】vue3-treeselect tree select component for vue 3 (next) 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-treeselect 在现代Web应用开发中,处理层级数据结构的需求日益增多。Vue3-Treeselect作…

作者头像 李华
网站建设 2026/6/10 14:32:31

Windows热键冲突排查终极指南:快速定位进程占用的专业方案

Windows热键冲突排查终极指南:快速定位进程占用的专业方案 【免费下载链接】hotkey-detective A small program for investigating stolen hotkeys under Windows 8 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 当你精心设计的应用程序全…

作者头像 李华
网站建设 2026/6/10 12:58:51

OptiScaler深度解析:如何在DLSS游戏中解锁XeSS与FSR超分辨率技术

核心价值:为什么你需要这款免费画质增强神器 【免费下载链接】CyberXeSS XeSS replacement for DLSS games 项目地址: https://gitcode.com/gh_mirrors/cy/CyberXeSS OptiScaler作为一款革命性的开源中间件,专为解决现代游戏玩家的核心痛点而生。…

作者头像 李华
网站建设 2026/6/10 12:59:25

告别标注噩梦:用LabelLLM开源数据标注平台重塑你的AI工作流

还在为数据标注的繁琐流程而头疼吗?LabelLLM作为一款功能强大的开源数据标注平台,正在彻底改变传统标注工作的方式。无论你是个人开发者还是团队负责人,这个工具都能让你体验到前所未有的标注效率。 【免费下载链接】LabelLLM 项目地址: h…

作者头像 李华
网站建设 2026/6/10 14:36:34

告别繁琐操作:VLC点击暂停插件让你一键掌控视频播放

告别繁琐操作:VLC点击暂停插件让你一键掌控视频播放 【免费下载链接】vlc-pause-click-plugin Plugin for VLC that pauses/plays video on mouse click 项目地址: https://gitcode.com/gh_mirrors/vl/vlc-pause-click-plugin 还在为每次暂停视频都要费力寻找…

作者头像 李华