C#文件流操作技巧

《BufferedStream》

BufferedStream 缓存区存储对象,特点读取性能比较快的,也需要包装其他文件流(FileStream),读取只有一个类

//1创建临时存储对象

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

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

byte\[\] infol = new UTF8Encoding().GetBytes("床前明月光,疑是地上霜,举头望明月,低头思故乡");

buff.Write(infol,0,infol.Length);//从字节数组的0位置开始写 写字节数组长度内容

byte\[\] info2 = new UTF8Encoding().GetBytes("Good good study day");

buff.Write(info2, 0, info2.Length);//从字节数组的0位置开始写 写字节数组长度内容

byte\[\] info3 = new UTF8Encoding().GetBytes("oiisfgcahfjishgydweydwhj");

buff.Write(info3, 0, info3.Length);//从字节数组的0位置开始写 写字节数组长度内容

buff.Flush();

buff.Close();

//3创建读取存储对象

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

byte\[\] arr = new bytebuff.Length;//定义数组存储读取的数据 长度为缓存区的大小

while (buff.Read(arr,0,arr.Length)>0)//如果数据没读完 继续读

{

Console.WriteLine(Encoding.UTF8.GetString(arr)); //把arr转成字符串进行展示

}

《Directory》

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

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

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

Directory.CreateDirectory(@"Image/OK");

//2 Exists判断文件路径是否存在

if (!Directory.Exists(@"Config"))

{

Console.WriteLine("1111111");

Directory.CreateDirectory(@"Config");

}

//3\C:\Users\10229\source\repos\第十九天\02Directoy文件夹操作对象\bin\Debug

//GetCurrentDirectory()获取当前目录 是一个绝对路径

//4Delete()删除文件夹的时候 参数2位true,可以删除目录以及子目录:参数2位false的话,如果有子目录,不允许删除

//5 Move() 把参数1位置文件或者是文件夹 移动到参数2这个位置上

//6Directory.GetDirectories()获取当前目录子目录

//7 GetFiles获取文件的

string\[\] pas= Directory.GetFiles("C:\\Users\\10229\\source\\repos\\第十九天\\02Directoy文件夹操作对象\\bin\\Debug");

foreach (var item in pas)

{

Console.WriteLine(item+"-------");

}

//8

DirectoryInfo info = new DirectoryInfo(@"新建文件夹");

//Attributes属性

//FileAttributes.Hidden文件隐藏属性

info.Attributes=FileAttributes.Hidden;//

《StreamReader和StreamWriter》

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

//StreamReader 读取流,实现文件读取功能

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

using (StreamReader sr = new StreamReader(@"1.txt", Encoding.UTF8))

{

//sr.ReadLine();读取一行

string lines;

while ((lines = sr.ReadLine()) != null)//一行一行去读,如果读取这一行赋值lines,并且lines==null证明读取完了

{

Console.WriteLine(lines);

}

}

using (StreamWriter sw = new StreamWriter(@"2.txt"))

{

sw.WriteLine("平安夜当时每个姓氏要一块钱,从一号要24号 凑24 买一个苹果");

}

相关推荐
geovindu6 小时前
python: Functional Options Pattern
开发语言·后端·python·设计模式·惯用法模式·函数式选项模式
wuyk5556 小时前
24. C 语言模块化:不是拆几个.c 文件那么简单
c语言·开发语言·stm32·单片机
无心水7 小时前
【全域智能营销实战】2、Spring AI 模块化架构深度解读:从 1.0 到 2.0 的演进与最佳实践
人工智能·spring·架构·harness·顶尖架构师·全域智能营销·harmess
梦梦代码精7 小时前
电商系统不是技术堆叠:LikeShop如何用分层Hold住复杂业务?
java·docker·代码规范
凯瑟琳.奥古斯特7 小时前
K次取反最大化数组和解法(力扣1005)
开发语言·c++·算法·leetcode·职场和发展
负责的蛋挞7 小时前
异步HttpModule的实现方式
java·服务器·前端
AC赳赳老秦7 小时前
防火墙规则批量配置实战:OpenClaw 自动生成模板、批量下发与合规性校验全解析
java·开发语言·人工智能·python·github·php·openclaw
☆cwlulu7 小时前
调试排查工具介绍(gdb、strace、Valgrind等)
开发语言·c++·嵌入式硬件·ubuntu
Tian_Hang8 小时前
Eclipse Ditto 物模型相关代码
java·运维·服务器·ide·eureka·eclipse
C语言小火车8 小时前
C++ 快速排序(Quick Sort)深度精讲:分治思想、Lomuto 分区法及三数取中优化,面试手撕必会
c语言·开发语言·c++·面试·排序算法·快速排序