news 2026/4/22 23:01:04

C#基础语法应用--BufferStream字节流临时存储对象、Directoy文件夹操作对象、StreamReader和StreamWriter、Json序列化和反序列化、数组转成Json格式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#基础语法应用--BufferStream字节流临时存储对象、Directoy文件夹操作对象、StreamReader和StreamWriter、Json序列化和反序列化、数组转成Json格式

BufferStream字节流临时存储对象

BufferStream:缓冲区存储对象

特点:读取性能比较快 也需要包装成其他文件流(FileStream) 读取只有这一个类

1 创建临时存储对象

BufferedStream buff =new BufferedStream(File.Create(@"1.txt"))

2 写入内容 传递一个字节数组

byte[] info1 = new UTF8Encoding().GetBytes("Hello\n"); buff.Write(info1 , 0 , info1.Length);//从字节数组的0位置开始写 写字节数组长度的内容 byte[] info2 = new UTF8Encoding().GetBytes("Hello Good Yes"); buff.Write(info2, 0, info2.Length); byte[] info3 = new UTF8Encoding().GetBytes("山南地委你当年"); buff.Write(info2, 0, info2.Length); buff.Flush();//确保完整输入 buff.Close();//停止写入流

3 创建读取存储对象

buff = new BufferedStream(File.OPenRead(@"1.txt")); byte[] arr =new byte[buff.Length] //定义一个数组存储读取的数据 长度为缓冲区的大小 while (buff.Read(arr , 0 , arr.Length)>0) //如果数据没有读取完毕则继续读取 { Console.Write(Encoding.UTF8.GetString(arr)); //把arr转成字符串进行展示 //Encoding.UTF8.GetString转换成字符串 }

Directoy文件夹操作对象

Directory: 提供一些处理文件夹的操作的属性和方法

DirectoryInfo: 设置文件夹属性的类 例如隐藏文件夹 只读文件夹等属性

1 创建一个文件夹

创建在Debug文件夹下面 Image/OK这样的一个目录

Directory.CreateDirectory(@"Image/OK")

2 Exists

判断文件路径是否存在

if(!Directory.Exists(@"Config")) { Console.WriteLine("111"); Directory.CreateDirectory(@"Config"); }

3 GetCurrentDirtectory

获取当前的目录 它是一个绝对路径

Console.WriteLine(Directory.GetCurrentDirectory());

4 Delete

删除文件夹的时候 参数2为true,可以删除目录以及子目录

Directory.Delete(@"Image",true)

参数2为false的话 不允许删除子目录

5 Move

把参数1位置文件 移动到参数2这个位置上

if (!Directory.Exists(@"../Test1")) { Directory.Move(@"Image1",@"../Test1"); }

6 GetDirectories

获取当前目录的子目录

string[] paths =Directory.GetDirectories("E:\\aaa\\VisualStudio\\第十九天\\Directoy文件夹操作对象\\bin\\Debug"); foreach (string path in paths) { Console.WriteLine(path) }

7 GetFiles

获取文件

string[] path1 = Directory.GetFiles("E:\\aaa\\VisualStudio\\第十九天\\Directoy文件夹操作对象\\bin\\Debug"); foreach (var item in path1) { Console.WriteLine(item); }

8 DirectoryInfo

DirectoryInfo info = new DirectoryInfo(@"新建文件夹"); //Attributes属性 //FileAttributes.Hidden 文件的隐藏属性 info.Attributes = FileAttributes.Hidden;

StreamReader和StreamWrite

BinaryReader br = new BinaryReader(,)//二进制读取原始数据参数是文件流 必须借助fileStream 有时候会出现文档内容出现乱码

StreamReader 读取流 实现文件读取功能,并且参数可以直接是路径和编码

1 using

声明一个块级的作用域 在声明的变量 在{}体之后已经被释放

参数1是路径 参数2是编码格式

using (StreamReader sr = new StreamReader(@"1.txt",Encoding.UTF8)) { //sr.ReadLine 读取一行 string lines; while ((lines = sr.ReadLine() !=null)//一行一行的读写 如果读取了这一行则赋值给lines 并且 lines==null则证明读取完毕 { Conlose.WriteLine(lines); } }

StreamWriter

2 写入对象

using (StreamWriter sw = new StreamWrite(@"2.txt")) { sw.WriteLine("张三") }

Json序列化和反序列化

文件内容存储的格式

//1 json格式
//2 xml格式
//3 ini格式
//4 csv格式

1 Json格式

整体是一个字符串结构 [] 代表数组 {}代表对象

json字符串要求:属性必须使用"" 属性可以基本数据类型也可以是对象类型 不能是函数 最后一个属性值不能带逗号

/*json字符串格式
* {
* "name":"zs",
* "age":10
* }
*/

序列化: 把对象转成字符串
反序列化: 把字符串格式转成对象
目的: 先把对象转成json字符串格式 再通过之前学的写入对象写到文本中 读取的先从文档读取成一个字符串 再把字符转成对应的对象

直接使用第三方来进行json序列化

第三方:使用Json.net第三方:点击引用-->管理nuget程序包-->切换浏览输入第三方包含关键字-->点击右边安装

首先创建一个类

class People { public string Name { get; set; } public int Age { get; set; } }

1 把对象转成json字符串

People p1 = new People() { Name = "张三", Age = 19 };

把对象转成json字符串

序列化过程

SerializeObject() 解析对象 把对象转成字符串 参数转成字符串的对象 例如p1转成字符串

string dataString = JsonConvert.SerializeObject(p1);

写入指定文档

File.WriteAllText(@"1.txt", dataString);

2 读取

string ss = File.ReadAllText(@"1.txt")

反序列化过程
把字符串转成对象

People pp = JsonConvert.DeserializeObject<People>(ss); Console.WriteLine(pp.Name+pp.Age);

数组转成Json格式

首先创建一个类

class Student { public string Id { get; set; } public string Name { get; set; } public int Age { get; set; } }

创建一个集合

List<Student> list = new List<Student>();

使用for循环

for (int i = 0; i < 10; i++) { Student s = new Student(); s.Name = "仓" + i + "号"; s.Age = i+18; s.Id = "00" + i; list.Add(s); }

存储本地文

把数组转成json字符串

string data= JsonConvert.SerializeObject(list); using (StreamWriter sw = new StreamWriter(@"1.json")) { sw.WriteLine(data);//写入文档 }

读取本地文

读取本地文件值是一个字符串类型

using (StreamReader sr = new StreamReader(@"1.json")) { string lines; while ((lines = sr.ReadLine()) != null) { Console.WriteLine(lines); //字符串转成对象 List<Student> list1 = JsonConvert.DeserializeObject<List<Student>>(lines); for (int i = 0; i < list1.Count; i++) { Console.WriteLine(list1[i].Name+list1[i].Age+ list1[i].Id); } } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 11:28:54

Dify在SEO标题生成中的关键词布局技巧

Dify在SEO标题生成中的关键词布局技巧 在内容为王的时代&#xff0c;一个网页能否被用户点击&#xff0c;往往取决于它的标题是否足够吸引人。而这个“吸引力”背后&#xff0c;其实是一场搜索引擎优化&#xff08;SEO&#xff09;与用户心理的双重博弈。传统的标题创作依赖编辑…

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

微信消息智能转发革命:wechat-forwarding 5分钟极速上手全攻略

在日常工作和生活中&#xff0c;我们经常需要在多个微信群之间同步重要信息&#xff0c;手动转发不仅耗时费力&#xff0c;还容易遗漏关键内容。今天介绍的 wechat-forwarding 开源工具&#xff0c;将彻底改变你的消息管理方式&#xff0c;实现微信群消息的智能自动转发。 【免…

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

Dify平台的古代语言风格模仿能力测试

Dify平台的古代语言风格模仿能力测试 在数字人文与AI技术交汇的今天&#xff0c;一个引人深思的问题浮现&#xff1a;机器能否真正“读懂”古文&#xff1f;更进一步——它是否能以古人之口吻言说&#xff0c;用《论语》的简练、唐诗的韵律、宋词的婉约来回应现代人的提问&…

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

Xenos终极DLL注入指南:快速掌握Windows进程注入技术

Xenos是一款专业的Windows动态链接库注入器&#xff0c;基于强大的Blackbone库构建&#xff0c;支持x86和x64架构进程注入操作。无论是安全研究、软件调试还是逆向工程&#xff0c;Xenos都能提供高效可靠的注入解决方案。 【免费下载链接】Xenos Windows dll injector 项目地…

作者头像 李华
网站建设 2026/4/22 17:11:09

上拉电阻如何防止浮空输入:通俗解释电路逻辑

上拉电阻如何防止浮空输入&#xff1a;从电路小白到工程师的实战解析你有没有遇到过这种情况——一个按钮明明没按&#xff0c;单片机却“误以为”被按下了&#xff1f;或者IC通信莫名其妙失败&#xff0c;查了半天发现是信号线“飘”了&#xff1f;问题很可能出在一个看似不起…

作者头像 李华
网站建设 2026/4/17 20:39:57

Dify在学术研究文献综述撰写中的辅助作用

Dify在学术研究文献综述撰写中的辅助作用 在当今科研环境中&#xff0c;一个不争的事实是&#xff1a;知识的增长速度早已远超个体的消化能力。以人工智能领域为例&#xff0c;每年仅arXiv上新增的相关论文就超过十万篇。面对如此海量信息&#xff0c;研究人员若仍依赖传统方式…

作者头像 李华