C#种更高级的文件处理

BufferStream

特点

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

代码

cs 复制代码
//创建一个临时存储对象 
BufferedStream buff =   new BufferedStream(File.Create(@"1.txt"));
//写入内容
byte[] infor = new UTF8Encoding().GetBytes("床前明月光,疑是地上霜,举头望明月,低头思故乡");
buff.Write(infor,0,infor.Length);//从字节数组0的位置开始写,写字节数组长度的内容
buff .Flush();
buff.Close();
//创建一个读取对象
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转为字符串进行展示
}

directoy文件夹操作对象

目的

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

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

cs 复制代码
//创建文件夹,创建在Debug文件夹下,Image/OK文件夹
Directory.CreateDirectory(@"Image/OK");

//Exists判断文件路径是否存在
if (!Directory.Exists(@"Config"))
{
    Directory.CreateDirectory(@"Config");
}

//Directory.GetCurrentDirectory()获取当前文件路径,是一个绝对路径
Console.WriteLine(Directory.GetCurrentDirectory());

//Delete()删除文件夹的时候,参数2为true,可以删除目录以及子目录,参数2为false,如果说有子目录就不允许删除
Directory.Delete(@"Image", false);

//Move(),把参数1位置的文件剪切到参数2这个位置上
if (!Directory.Exists(@"../Text1"))
{
    Directory.Move(@"Image", @"../Text1");
}

//GetDirectories()获取当前目录的子目录(文件夹)
string[] s=  Directory.GetDirectories("D:\\");
foreach (var item in s)
{
    Console.WriteLine(item+"---");
}

//GetFiles获取文件

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

StreamReader和StreamWriter

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

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

using (),声明了一个块级的作用域,在using声明的变量,在{ }里面已经被释放

cs 复制代码
useing(StreamReader sr=new StreamReader(@"1.txt",Enconding.UFT8))
{
//sr.ReadLine()读取一行
string line;
while((line=sr.ReadLine())!=null)//一行一行去读,如果读取这一行赋值line,并且line==null证明读取完了
{
Console.WriteLine(line);
}
}

//StreamWrite写入对象
 using(StreamWriter sw =new StreamWriter(@"2.txt"))
{
sw.WriteLine("平安夜");
}
相关推荐
唐青枫11 分钟前
别把 ImmutableArray 当成只读 List:C#.NET 不可变数组深入详解
c#·.net
luj_17681 小时前
塔防牌:策略与卡牌的智慧碰撞
服务器·c语言·开发语言·经验分享·算法
郝学胜-神的一滴1 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
爱编程的小新☆2 小时前
【LeetCode】从递归到 Flood Fill:5 道题吃透 DFS 的选择、回溯与标记
java·算法·leetcode·深度优先·回溯·flood fill
Water_Sunzhipeng2 小时前
2024牛客暑期多校训练营1
算法
hetao17338372 小时前
2026-08-09~08-14 hetao1733837 的刷题记录
c++·算法
技术小黑2 小时前
RNN算法实战系列06 | LSTM 实现糖尿病探索与预测
rnn·算法·lstm
疯狂打码的少年2 小时前
【数据结构】二叉树的性质(五大性质+计算)
数据结构·笔记·算法
zlinear数据采集卡3 小时前
D223 ADC数据处理流水线:从原始采样值到工程单位的完整转换链
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
wabs6663 小时前
关于图论【A*算法 | 卡码网127.骑士的攻击的思考】
数据结构·算法·图论·卡码网·广搜的改进版