使用流处理数据的优势:可以一次性搬运数据量大的文件,把数据当做水,一点一点搬运。
数据的传输方向:从外部源传输到程序(读取流);从程序传输到外部源(读入流)
外部源:文件、网络数据、内存区域、命名管道
读写内存: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.NetworkStreamFileMode类:指定操作系统打开文件的方式(CreateNew、Create、Open、OpenOrCreate、Turncate、Append)FileAccess类:访问权限(Read、Write、ReadWrite)读写文本文件StreamReader和StreamWriterStreamReader会帮我们自动处理编码格式*/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()); // 75Create创建新文件,若文件存在会覆盖//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.