news 2026/4/14 21:29:48

【第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/14 5:27:29

SuperPNG终极指南:免费快速实现Photoshop无损图像压缩

还在为Photoshop导出的PNG文件体积过大而烦恼吗?SuperPNG插件就是你的救星!这款强大的免费工具能让图像在保持完美画质的同时,文件体积锐减50%以上。无论你是网页设计师、摄影师还是普通用户,都能轻松上手。 【免费下载链接】Supe…

作者头像 李华
网站建设 2026/4/15 8:48:32

Visual C++运行库完全修复指南:从基础安装到企业级部署

Visual C运行库完全修复指南:从基础安装到企业级部署 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 当游戏闪退、专业软件报错"找不到MSVCP140.…

作者头像 李华
网站建设 2026/4/13 2:36:52

B站视频本地化保存全攻略:解锁高清资源永久收藏

还记得那个让你反复回味的B站视频吗?当它突然下架时,那份遗憾是否还萦绕心头?在这个数字内容瞬息万变的时代,掌握视频本地化保存技能已成为数字时代必备能力。 【免费下载链接】bilibili-downloader B站视频下载,支持下…

作者头像 李华
网站建设 2026/4/15 13:33:45

CrystalDiskInfo硬盘健康监测全攻略:告别数据丢失的5个关键步骤

在数字时代,硬盘健康监测已成为保护数据安全的重要防线。无论是工作文档还是珍贵回忆,硬盘故障可能导致无法挽回的损失。CrystalDiskInfo作为专业的硬盘健康监测工具,通过精准的数据分析和直观的界面设计,帮助用户及时发现潜在风险…

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

解放双手!Python自动化工具助你批量添加微信好友,效率提升500%

解放双手!Python自动化工具助你批量添加微信好友,效率提升500% 【免费下载链接】auto_add_wechat_friends_py 微信添加好友 批量发送添加请求 脚本 python 项目地址: https://gitcode.com/gh_mirrors/au/auto_add_wechat_friends_py 还在为手动添…

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

IPXWrapper终极指南:轻松解决经典游戏在Windows 11的网络连接问题

IPXWrapper终极指南:轻松解决经典游戏在Windows 11的网络连接问题 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper 还在为《红色警戒2》、《星际争霸》等经典游戏无法在Windows 11上联机而烦恼吗?IPXWrapp…

作者头像 李华