文件类
静态类,对文件夹,文件进行操作。因为不需要实例化,适合对某个文件文件夹进行少量操作
和上面的用法差不多,这个要实例化。把文件,或者文件夹实例化成对象,方便多次操作。
静态类,对路径进行操作
Stream基类
C#中,所有流都是继承自Stream类,Stream类定义了流应该具有的行为和属性,使得开发人员可以忽略底层的操作系统和基础设备的具体细节。C#对流的处理忽略了读流和写流的区别,使其更像是一个管道,方便数据通信。流涉及到三个基本操作:
- 读取 - 将数据从流中传输到数据结构中
- 写入 - 将数据从数据源写入流中
- 查找 - 对流中操作的当前位置进行查找和修改
因为流的特性,可能并不是所有的流都支持这三种操作,所以Stream提供了三个属性,以方便确认流是否支持这三种操作:
public abstract bool CanRead { get; } // 获取指示当前流是否支持读取的值
public abstract bool CanWrite { get; } // 获取指示当前流是否支持写入功能的值
public abstract bool CanSeek { get; } // 获取指示当前流是否支持查找功能的值
常用流介绍
字符流
类名的结尾是Reader和Writer的,一般直接用来操作字符文件
- StreamReader 和 StreamWriter:用特殊编码读取字节流的字符和把字符写入字节流
- StringReader 和 StringWriter :从字符串读取写入,信息存储在基础 StringBuilder 中。
BinaryReader 和 BinaryWriter :二进制读写
字节流
都是派生至Stream基类,类名的结尾是Stream的
FileStream:用来操作文件的流
- MemoryStream :MemoryStream类主要用于操作内存中的数据。比如说网络中传输数据时可以用流的形式,当我们收到这些流数据时就可以声明MemoryStream类来存储并且处理它们。
- BufferedStream:缓存流,增强其他流的性能
- NetworkStream :为网络访问提供数据的基础流,NetWorkStream类是专门用来处理服务器与客户端通信的流。它在网络编程中经常使用,主要是用来处理类似Socket、TcpClient和TcpListener这些类中得到的流
更多流看文档Stream的派生
FileStream基础操作
static void Main(string[] args)
{
FileStream stream = new FileStream(@"E:\1测试加密\数学1上.avi", FileMode.Open);
FileStream stream1 = new FileStream(@"E:\1测试加密\写出的数学.avi", FileMode.Create);
byte[] b = new byte[1024];//设置缓冲区
while (stream.Read(b, 0, b.Length) != 0)//读取字节到缓冲数组,一次读取1024字节,返回读取到的字节数量。
{
stream1.Write(b, 0, b.Length);//写入另一个文件
}
}
StreamReader和StreamWriter基础操作
static void Main(string[] args)
{
using (FileStream stream = new FileStream(@"E:\1测试加密\斗po苍穹.txt", FileMode.Open))
{
using (StreamReader sr = new StreamReader(stream, Encoding.UTF8))
{
string str = sr.ReadToEnd();
Console.WriteLine(str);
using (FileStream fs = new FileStream(@"E:\1测试加密\字符流写出的斗破.txt", FileMode.Create))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.Write(str);
}
}
}
}
}