news 2026/4/18 10:14:21

【第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 6:59:28

My-TODOs跨平台桌面任务管理工具完整使用指南

My-TODOs跨平台桌面任务管理工具完整使用指南 【免费下载链接】My-TODOs A cross-platform desktop To-Do list. 跨平台桌面待办小工具 项目地址: https://gitcode.com/gh_mirrors/my/My-TODOs 在数字化工作环境中,高效的任务管理成为提升个人生产力的关键要…

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

MPC-BE播放器:重新定义Windows平台的高清影音体验

MPC-BE播放器:重新定义Windows平台的高清影音体验 【免费下载链接】MPC-BE MPC-BE – универсальный проигрыватель аудио и видеофайлов для операционной системы Windows. 项目地址: https:…

作者头像 李华
网站建设 2026/4/18 10:52:46

Source Han Serif CN:7大优势让专业字体设计触手可及

Source Han Serif CN:7大优势让专业字体设计触手可及 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 在数字化设计领域,字体选择往往决定着作品的成败。Source …

作者头像 李华
网站建设 2026/4/18 10:08:00

Vue3-Treeselect终极实战:如何快速掌握企业级树形选择器开发

在构建现代Web应用时,处理复杂的层级数据结构是一个常见挑战。传统的扁平选择器在面对组织架构、商品分类、权限管理等场景时往往力不从心。这就是Vue3-Treeselect组件大显身手的地方——一个专门为Vue 3设计的强大树形选择器解决方案。 【免费下载链接】vue3-trees…

作者头像 李华
网站建设 2026/4/18 10:08:40

EPPlus 8.0.1:企业级Excel处理的革命性升级

EPPlus 8.0.1:企业级Excel处理的革命性升级 【免费下载链接】EPPlus EPPlus-Excel spreadsheets for .NET 项目地址: https://gitcode.com/gh_mirrors/epp/EPPlus 在当今数据驱动的时代,EPPlus作为一款强大的Excel处理库,为.NET开发者…

作者头像 李华