使用流处理数据的优势:可以一次性搬运数据量大的文件,把数据当做水,一点一点搬运。
数据的传输方向:从外部源传输到程序(读取流);从程序传输到外部源(读入流)
外部源:文件、网络数据、内存区域、命名管道
读写内存: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.