news 2026/6/15 19:40:19

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/6/15 19:13:03

Zotero插件市场终极指南:3分钟完成自动化插件管理

Zotero插件市场终极指南&#xff1a;3分钟完成自动化插件管理 【免费下载链接】zotero-addons Zotero add-on to list and install add-ons in Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-addons 你是否曾经为了安装一个Zotero插件&#xff0c;不得不在…

作者头像 李华
网站建设 2026/6/15 14:32:40

Windows桌面美化终极指南:轻松实现任务栏透明效果完全教程

Windows桌面美化终极指南&#xff1a;轻松实现任务栏透明效果完全教程 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 还在为单调的Windo…

作者头像 李华
网站建设 2026/6/15 12:52:29

免费直链下载终极指南:告别网盘限速烦恼![特殊字符]

免费直链下载终极指南&#xff1a;告别网盘限速烦恼&#xff01;&#x1f680; 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 还在为网盘下载速度慢而烦恼吗&#xff1f;&#x1f914; 网盘直…

作者头像 李华
网站建设 2026/6/15 12:51:42

数字孪生三维可视化:Unity3D实战入门必看

Unity3D实战入门&#xff1a;构建工业级数字孪生系统的完整路径你是否曾面对一堆传感器数据&#xff0c;却只能在Excel表格或二维图表中“脑补”设备运行状态&#xff1f;你是否希望让工厂产线、城市管网、风电系统“活起来”&#xff0c;实现所见即所得的实时监控与交互式诊断…

作者头像 李华
网站建设 2026/6/15 12:52:09

IDEA插件版摸鱼看书神器:3种方式在开发环境中高效阅读

IDEA插件版摸鱼看书神器&#xff1a;3种方式在开发环境中高效阅读 【免费下载链接】thief-book-idea IDEA插件版上班摸鱼看书神器 项目地址: https://gitcode.com/gh_mirrors/th/thief-book-idea 在紧张的编码工作间隙&#xff0c;如何在不离开开发环境的情况下享受阅读…

作者头像 李华
网站建设 2026/6/15 11:41:05

5分钟掌握Boss直聘自动化投简历:彻底告别手动求职时代

5分钟掌握Boss直聘自动化投简历&#xff1a;彻底告别手动求职时代 【免费下载链接】boss_batch_push Boss直聘批量投简历&#xff0c;解放双手 项目地址: https://gitcode.com/gh_mirrors/bo/boss_batch_push 还在为每天重复点击"立即沟通"而消耗宝贵时间吗&a…

作者头像 李华