news 2026/4/23 14:49:58

【第17天】17c#今日小结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【第17天】17c#今日小结

1.排序列表

排序列表:对进行排序的集合,访问时候可以通过键进行访问,也可以索引值进行访问,
可以当成是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); -----指定键移除

Console.WriteLine(sort.ContainsKey(5));-----确定sort中是否包含该键若有返回true没有返回false

foreach (DictionaryEntry item in sort) Console.WriteLine(item.Value);-----遍历sort中的键值对

DictionaryEntry-----主要用于表示字典/哈希表中的单个键值对,是值类型。

static void Main(string[] args) { SortedList sort = new SortedList(); sort.Add(10, "张三"); sort.Add(5, "李四"); Console.WriteLine(sort[10]); Console.WriteLine(sort.GetByIndex(0)); // sort.Clear(); sort.Remove(10); Console.WriteLine(sort.ContainsKey(5)); foreach (DictionaryEntry item in sort) Console.WriteLine(item.Value); Console.ReadKey(); }

2.File文件读写操作

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

1 .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");

Close()方法是释放资源的关键方法

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

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

3.Exists()判断路径下是否有文件
if (!File.Exists(@"../2.txt")) ----- 不存在下再去复制
{
File.Copy(@"./2.txt", @"../2.txt");
}

4.Move()从参数1路径文件剪切到参数2路径上
File.Move(@"./2.txt", @"../3.txt");

5.Delete()删除指定路径下文件
File.Delete(@"../3.txt");

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

ReadAllText()-----读取文本

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

7 .WriteAllBytes()以字节的方法进行写入 参数1路径 参数2字节数组、
Encoding.UTF8.GetStrings()把字节数组转成字符串
Encoding.UTF8.GetBytes()把字符串转成字节数组,
byte[] bs = Encoding.UTF8.GetBytes("铁头在靖国神厕撒一泡尿");
File.WriteAllBytes("1.txt", bs);

8.WriteAllLines()写换行的格式进行写入---参数一路径,参数二字符串数组

9.AppendAllText()追加文本-----参数一路径,参数二字符串

3.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);

fs.WriteByte()-----写入字节 参数字节类型
fs.Write() -----如果写入是字符串 使用write()这个API(方法)

fs.Position = 1;-----设置当前流位置

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();

4.二进制数据读写从操作

二进制原始数据读写操作 通过BinaryReaderBinaryWriter进行实现,写入和读取性能比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("你说的是颠三倒四颠三倒四"));

读取文件数据

创建文件流对象
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(); //释放文件流

这几个的区别

1.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));
}

2.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)

3.File
File.WriteAllText("") File.ReadAllText()
File.WriteAllLines(new string[]{"1","2"}) 字符串数组
File.WriteAllBytes(Encoding.UTF8.GetBytes("铁头在靖国神厕撒一泡尿")) 传递字节数组




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

通达信数据解析入门指南:3分钟掌握Python金融数据读取技巧

通达信数据解析入门指南:3分钟掌握Python金融数据读取技巧 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx mootdx是一个专为通达信数据解析设计的Python工具库,让开发者能够…

作者头像 李华
网站建设 2026/4/23 14:48:10

AutoDock Vina分子对接从入门到精通:手把手教你成为计算药物设计高手

想要快速掌握分子对接技术却不知从何入手?AutoDock Vina作为计算药物设计领域最受欢迎的免费开源工具,能够精准预测蛋白质与药物分子的结合模式。本教程将带你从零基础开始,通过生动比喻和实战案例,轻松掌握这个强大工具的核心用法…

作者头像 李华
网站建设 2026/4/23 13:12:13

B站缓存转换实用指南:轻松实现跨设备播放

B站缓存转换实用指南:轻松实现跨设备播放 【免费下载链接】m4s-converter 将bilibili缓存的m4s转成mp4(读PC端缓存目录) 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经在B站收藏了大量精彩视频,却苦于只能在客户端内观看…

作者头像 李华
网站建设 2026/4/23 13:16:00

游戏DLC解锁终极指南:全平台通用解决方案完整教程

游戏DLC解锁终极指南:全平台通用解决方案完整教程 【免费下载链接】Koalageddon Koalageddon: 一个合法的DLC解锁器,支持Steam、Epic、Origin、EA Desktop和Uplay平台。 项目地址: https://gitcode.com/gh_mirrors/ko/Koalageddon 还在为心爱的游…

作者头像 李华
网站建设 2026/4/23 13:16:57

抖音评论数据采集终极指南:三步实现批量自动化抓取

还在为手动整理抖音评论而头疼吗?想要系统分析用户反馈却找不到合适的工具?这款抖音评论采集神器将彻底改变你的工作方式,无需任何编程经验,三分钟即可完成完整的数据采集流程。 【免费下载链接】TikTokCommentScraper 项目地址…

作者头像 李华
网站建设 2026/4/23 14:47:54

Audiveris乐谱识别实战:从图片到MIDI的完整解决方案

Audiveris作为一款专业的开源光学音乐识别工具,能够将乐谱图像准确转换为可编辑的MusicXML和MIDI格式。无论你是音乐教育工作者、数字音乐制作人,还是乐谱收藏爱好者,这款工具都能为你提供高效便捷的乐谱数字化服务。 【免费下载链接】audive…

作者头像 李华