1.BufferStream字节流临时存储对象
BufferedStream 缓存区存储对象,特点读取性能比较快,也需要包装其他文件流(FileStream),读取只有这一个类。
1 创建临时存储对象
BufferedStream buff = new BufferedStream(File.Create(@"1.txt"));
2 写入内容 传递一个字节数组
byte[] info1 = new UTF8Encoding().GetBytes("窗前明月光,疑是地上霜,举头望明月,低头思故乡\n");
buff.Write(info1, 0, info1.Length);-----从字节数组的0位置开始写 写字节数组长度的内容
byte[] info2 = new UTF8Encoding().GetBytes("Good good study day day up\n");
buff.Write(info2, 0, info2.Length);
byte[] info3 = new UTF8Encoding().GetBytes("个税是颠倒是的是的");
buff.Write(info3, 0, info3.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.WriteLine(Encoding.UTF8.GetString(arr));-----把arr转成字符串进行展示
}


2.Directoy文件夹操作对象
Directory:提供一些处理文件夹的操作的属性和方法
DirectoryInfo:设置文件夹属性的类 例如隐藏文件夹,只读文件夹等属性
1创建文件夹 创建在Debug文件下 Image/OK这样的目录
Directory.CreateDirectory(@"Image/OK");
2 Exists 判断文件路径是否存在
if (!Directory.Exists(@"Config"))
{
Console.WriteLine("1111");
Directory.CreateDirectory(@"Config");
}
3 GetCurrentDirectory() 获取当前目录 是一个绝对路径
Console.WriteLine(Directory.GetCurrentDirectory());
我的这里获得的是E:\qq下载\c#语法\2025.12.25C#高级语法(十九)\第19天\03Directoy文件夹操作对象\bin\Debug
4 Delete() 删除文件夹的时候 参数2为true时,可以删除目录以及子目录;参数2为false的话,如果有子目录,不允许删除
Directory.Delete(@"i1", false);
5Move() 把参数1位置文件或者文件夹 移动到参数2这个位置上
if (!Directory.Exists(@"../Test1"))
{
Directory.Move(@"Image1", @"../Test1");
}
6 GetDirectories 获取当前目录子目录
string[] paths = Directory.GetDirectories("../Debug");
string[] paths = Directory.GetDirectories("E:\\qq下载\\c#语法\\2025.12.25C#高级语法(十九)\\第19天\\03Directoy文件夹操作对象\\bin\\Debug");
foreach (string path in paths)
{
Console.WriteLine(path+"--------------");
}

7GetFiles 获取文件
string[] path1 = Directory.GetFiles("E:\\qq下载\\c#语法\\2025.12.25C#高级语法(十九)\\第19天\\03Directoy文件夹操作对象\\bin\\Debug");
foreach (var item in path1)
{
Console.WriteLine(item + "+++++++");
}

8 隐藏文件夹
DirectoryInfo info = new DirectoryInfo(@"新建文件夹");
Attributes-----属性
FileAttributes.Hidden -----文件的隐藏属性
info.Attributes = FileAttributes.Hidden;
3.StreamReader和StreamWriter
BinaryReader br = new BinaryReader(,)-----二进制读取原始数据参数是文件流,必须借助fileStream,有时候会出现文档内容出现乱码
StreamReader 读取流,实现文件读取功能,并且参数可以直接是路径和编码
using(),声明一个块级的作用域,在声明的变量,在{}体之后已经被释放
using (StreamReader sr = new StreamReader(@"2.txt",Encoding.UTF8))
{
sr.ReadLine() -----读取一行
string lines;
while ((lines=sr.ReadLine())!=null) -----一行一行去读,如果读取这一行赋值lines,并且lines==null证明读取完了
{
Console.WriteLine(lines);
}
}
StreamWriter 写入对象
using (StreamWriter sw = new StreamWriter(@"2.txt"))
{
sw.WriteLine("平安夜当时每个姓氏要一块钱,从1号要24号 凑24 买一个苹果");
}

4.json序列化和反序列化
文件内容存储的格式
1 json格式,[] 代表数组 {}代表对象 ,
2 xml格式
3 ini格式
4 csv格式
json字符串要求:属性必须使用""括起来,属性值可以基本数据类型也可以对象类型,不能是函数,
最后一个属性值不能带逗号
json字符串格式
{
"name":"zs",
"age":10
}
序列化: 把对象转成字符串
反序列化:把字符串格式转成对象
目的:先把对象转成json字符串格式。再通过之前学的写入对象写到文本中,
读取的先从文档读取成一个字符串,再把字符转成对应的对象。
建议直接使用第三方进行json序列化
使用JSon.net第三方:点击引用--->管理nuget程序包--->切换浏览输入第三方包名关键字------>点击右边安装(本篇后面使用的就是这个)后面附安装教程。
class People
{
public string Name { get; set; }
public int Age { get; set; }
}-----先创建一个类
1 把对象存储到文档中
People p1 = new People() { Name="张三",Age = 10};
把对象转成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);

安装教程



这样就完成了。
5.数组转成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 (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);
}
}
}


1158

被折叠的 条评论
为什么被折叠?



