C#__使用流读取和写入数据的简单用法

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值