当前位置: 首页 > news >正文

C#基础语言练习--排序列表、File文件读写操作、FileStream文件流、二进制数据读写操作

排序列表

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

首先定义排序使用SortedList进行定义

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

通过键进行访问

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

通过索引值进行访问

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

清空列表

sort.Clear();

指定键移除张三

sort.Remove(10);

最后打印排序

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

File文件读写操作

File文件进行读写操作使用File需要引用命名

using System.IO; IO的意思是输入和输出

File文件的读写操作的类

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

1. Create

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

文件位置 可以是绝对路径C:\Users\Administrator\Desktop\1.txt

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

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

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

../1.txt 相对默认路径(debug文件下)上一层路径

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

也是默认路径

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

2. fs.Close

如果不写 fs.Close();会出现 2.txt 正在被使用

3. Copy

Copy把文件从参数1路径复制到参数2这个路径上 (destination 目的 source:源)

4. Exists

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

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

5. Move

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

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

6. WriteAllText

WriteAllText();以字符串的方法进行写入路径

参数1路径 参数2写入内容

File.WriteAllText("1.txt", "我爱你你爱我"); string s = File.ReadAllText("1.txt", Encoding.UTF8); //参数1文件路径 参数2是编码格式 Console.WriteLine(s);

7. WriteAllBytes

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

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

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

byte[] bs = Encoding.UTF8.GetBytes("铁头"); File.WriteAllBytes("1.txt", bs); byte[] bs1 = File.ReadAllBytes(@"1.txt"); // 读取路径的文本,转成字节数组了 Console.WriteLine(Encoding.UTF8.GetString(bs1));

8. WriteAllLines

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

AppendAllText() 追加文本

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

FileStream 文件流

参数1 指定文件流路径

参数2 指定打开文件模式:

1. FileMode.Open

文件打开的方式 打开现有的文件,如果没有文件 抛出异常

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

2. FileMode.Create

如果存在1.txt 会覆盖原先的文件,如果没有则创建一个

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

3. FileMode.OpenOrCreate

如果存在则打开 如果不存在则新建一个

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

参数3: FileAccess文件权限:

FileAccess.ReadWrite 具有文件读写权限
FileAccess.Read: 只读权限
FileAccess.Write 写入权限

FileStream fs = new FileStream(@"1.txt", FileMode.Create, 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里面的数据读取到指定字节数组里面 Console.WriteLine(Encoding.UTF8.GetString(buffer));//转成字符串打印 fs.Close();

二进制数据读写操作

读写操作的类

二进制原始数据读写操作 通过BinaryWriter和BinaryReader进行实现,写入和读取性能比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.2f);//写入一个浮点类型

写入数据 传递一个字节数组 可以一次传入也可以多次传入

bw.Write(new UTF8Encoding().GetBytes("单刷厚度hi街道i")); bw.Write(new UTF8Encoding().GetBytes("10")); bw.Write(new UTF8Encoding().GetBytes("张三")); fs.Flush();//确保完整写入 bw.Close();//关闭写入流 fs.Close();//关闭文件流

读取文件数据

1 创建文件流对象

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

2 创建一个二进制读取对象

BinaryReader br = new BinaryReader(fs);

3 使用的时候一般采用while进行循环去读写

byte[] buffer = new byte[fs.Length]; while (br.Read(buffer,0,buffer.Length)>0)//循环条件 { Console.WriteLine(Encoding.UTF8.GetString(buffer)); }

一般不会采用单独的去读一个数据 不会采用以下方法

Console.WriteLine(br.ReadInt32());//读取整形的10 Console.WriteLine(br.ReadBoolean()); Console.WriteLine(br.ReadString()); Console.WriteLine(br.ReadDouble()); Console.WriteLine(br.ReadDouble()); Console.WriteLine(br.ReadBoolean()); Console.WriteLine(br.ReadString());
//使用 br.Read(); br.Close();//释放读取对象 fs.Close();//释放文件流

总结

1 BinaryWrite 和 BinaryReader


第一种写入读取: 单独写入指定类型数据的时候 使用bw.Write(100); 通过Console.WriteLine(br.ReadInt32());进行单独读取
第二种写入读取: 传递一个字节数组通过bw.Write 传入字节数组(new UTF8Encoding().GetBytes("单刷厚度hi街道i"));
通过使用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 = "你好世界,为啥有乱码,为啥马赛克要打在脸上";
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("是大红色段数")) 传递字节数组




http://www.jsqmd.com/news/135766/

相关文章:

  • 鸿蒙应用开发之用户首选项(Preferences)使用
  • 在CentOS云服务器上安装LAMP(Linux, Apache, MySQL, PHP)环境
  • 别再盲目手写论文了!6款AI写论文工具,真实参考文献,AIGC率低至11%
  • 基于PLC的自动门控制系统设计感应门控制博图HMI仿真组态
  • gazebo栅格地图生成(ros1/ros2均可启用)
  • MTPA数值求解的两种方法
  • 我发现数据中心冷却成本骤降后来才知道是ACTN动态优化温控策略的隐藏技巧
  • 2025 核心DeepSeek推广公司大全 - 品牌2025
  • 日总结 44
  • Python 的类型提示(type hint)
  • ServiceWorker 通信
  • 鸿蒙应用开发之通过ListItemGroup、nestedScroll实现商城活动可折叠分组滚动效果
  • 推出新型面向 AI 加速器的高性能编程框架——PyPTO
  • Java计算机毕设之基于springboot的公司财务预算管理系统财务收支管理 收入/支出记录(完整前后端代码+说明文档+LW,调试定制等)
  • VMware替代 | ZStack Cloud与NSX二层三层网络对比分析
  • 2025 年公众号排版软件怎么选?6 款主流编辑器真实横评
  • 18.0环实现线程和进程的监控(ObRegisterCallbacks函数)-Windows驱动
  • Dockerfile
  • 【Linux】进程控制(2)进程等待
  • 硬件有限,如何部署“大”模型?AMCT模型压缩工具3步解忧
  • 有关LangChain
  • 软件工程学习日志2025.12.24
  • 52、卷积层(填充paddinng)
  • 用NLMS实现对语音的回声的消除,共4个文件,语音原声,语音回声,NLMS的实现
  • 【毕业设计】基于springboot的公司财务预算管理系统(源码+文档+远程调试,全bao定制等)
  • 乐迪信息:煤矿皮带区域安全管控:人员违规闯入智能识别
  • 49、图像的相关知识
  • 基于VMD分解算法的信号处理与故障诊断:程序化实现及数据预测分类研究
  • 【毕业设计】基于SpringBoot+Vue技术的医疗器械管理系统设计与实现(源码+文档+远程调试,全bao定制等)
  • AUTOSAR学习资料大集合