news 2026/5/1 7:04:23

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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("是大红色段数")) 传递字节数组




版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 14:13:31

Linux操作系统之文件IO

初始文件文件的宏观理解:文件是在硬盘上存储的,对文件的所有操作,都是对外设的输入输出,简称IO即使磁盘上有空文件,但是他依然占用我们的磁盘空间,因为文件内容属性(元数据)&#xf…

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

50、CNN的概述介绍

CNN的概述 卷积层: 卷积核(小的矩阵)进行点乘求和池化层: 提取特征(最大值提取、平均提取)全连接:判断分类 卷积之后为什么需要池化呢? 因为信息太多了,计算量太大,我…

作者头像 李华
网站建设 2026/5/1 7:02:22

51、卷积层(计算规则)

卷积层(计算规则)线性的矩阵点乘求和(先点积(同位置相乘),再求和)卷积核叫做Filter。简称F经过卷积核之后的输出图像叫做特征图问题点边缘被计算的很少,就只有最开始的那一次被计算到…

作者头像 李华
网站建设 2026/4/28 3:45:06

基于改进鹈鹕算法(IPOA)优化BP神经网络的智能数据回归预测模型——IPOA-BP模型及其评...

基于改进鹈鹕算法(IPOA)优化BP神经网络的数据回归预测(IPOA-BP) 鹈鹕算法是2022年提出的新算法 目前应用较少 改进的鹈鹕算法在知网检索结果更是少之又少 具体改进点为:种群初始化、引入反向差分进化和加入萤火虫扰动 算法注释清楚 每一行都有说明 基于MATLAB环境 …

作者头像 李华
网站建设 2026/4/29 18:17:26

MTPA数值求解的两种方法

MTPA数值求解两种方法在电机控制领域,MTPA(Maximum Torque Per Ampere)是个让人又爱又恨的技术指标。这玩意儿说白了就是在给定电流条件下榨出最大转矩,听着像不像在超市抢特价鸡蛋——如何在有限的预算(电流&#xff…

作者头像 李华