使用流处理数据的优势:可以一次性搬运数据量大的文件,把数据当做水,一点一点搬运。
数据的传输方向:从外部源传输到程序(读取流);从程序传输到外部源(读入流)
外部源:文件、网络数据、内存区域、命名管道
读写内存:System.IO.MemorySystem
处理网络数据:System.Net.Sockets.NetworkStream
FileMode类:指定操作系统打开文件的方式(CreateNew、Create、Open、OpenOrCreate、Turncate、Append)
FileAccess类:访问权限(Read、Write、ReadWrite)
读写文本文件
StreamReader和StreamWriter
StreamReader会帮我们自动处理编码格式
// 主程序
class Program
{
/*
使用流处理数据的优势:可以一次性搬运数据量大的文件,把数据当做水,一点一点搬运。
数据的传输方向:从外部源传输到程序(读取流);从程序传输到外部源(读入流)
外部源:文件、网络数据、内存区域、命名管道
读写内存:System.IO.MemorySystem
处理网络数据:System.Net.Sockets.NetworkStream
FileMode类:指定操作系统打开文件的方式(CreateNew、Create、Open、OpenOrCreate、Turncate、Append)
FileAccess类:访问权限(Read、Write、ReadWrite)
读写文本文件
StreamReader和StreamWriter
StreamReader会帮我们自动处理编码格式
*/
static void Main(string[] args)
{
DateTime.Now获取运行到现在位置的时间
//DateTime before = DateTime.Now;
byte[] array = {10, 20, 30};
定义了一个FileStream,打开文件,只读
//FileStream readFileStream = new FileStream(@"D:\素材.zip", FileMode.Open, FileAccess.Read);
//Console.WriteLine(readFileStream); // System.IO.FileStream
//readFileStream.ReadByte(); // 只读取一个字节,强制转化为int类型
//Console.WriteLine(readFileStream.ReadByte()); // 75
Create创建新文件,若文件存在会覆盖
//FileStream wrFileStream = new FileStream(@"D:\素材copy.zip", FileMode.Create, FileAccess.ReadWrite);
wrFileStream.Write(array,0,3);
//Console.WriteLine(wrFileStream.ReadByte()); // -1
// 复制文件:一字节一字节复制,较慢
int nextByte = -1;
while((nextByte = readFileStream.ReadByte()) != -1)
{
wrFileStream.WriteByte((byte)nextByte);
}
优化,加粗水管
byte[] buffer = new byte[1024]; // 1024102410241024102410241024102410241024724481838.0658
//byte[] buffer = new byte[10240]; // 1024102410241024102410241024102410241024724481838.0658
//int count = 0;
从流中读取字节块并将该数据写入给定缓冲区中
int count = readFileStream.Read(buffer, 0, 1024);
wrFileStream.Write(buffer, 0, count); // 将字节块写入文件流
//while((count = readFileStream.Read(buffer, 0, 10240)) != 0)
//{
// Console.Write(count);
// wrFileStream.Write(buffer, 0, count);
//}
//wrFileStream.Close();
//readFileStream.Close(); // 文件流的关闭,释放与它相关的资源,刷新缓冲区
Console.WriteLine(wrFileStream.ReadByte());
//DateTime after = DateTime.Now;
//TimeSpan ts = after.Subtract(before); // 从此实例中减去指定的日期和时间
//Console.WriteLine(ts.TotalMilliseconds); // 获取以整毫秒数和毫秒的小数部分
//文本读取和写入流(小案例)
string scoureFile = @"D:\C#编程\输入流和输出流\test1.txt";
string destinationFile = @"D:\C#编程\输入流和输出流\distination.txt";
StreamReader reader = new StreamReader(scoureFile);
StreamWriter writer = new StreamWriter(destinationFile);
string line = null;
while((line = reader.ReadLine()) != null)
{
writer.WriteLine(line);
}
writer.Close();
reader.Close();
}
}
// test.txt
Hello.
YOU ARE A STUDENT.
you need to study.
// distination.txt
HOW ARE YOU?
OH,I am fine.
Thank you.
// 运行后,distination.txt
Hello.
YOU ARE A STUDENT.
you need to study.