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

2023-09-21 00:14:29

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

更多推荐

php文件上传功能(文件上传)

实现文件上传是Web开发中常用的功能之一,而PHP也是支持文件上传的。那么,下面我们就来介绍一下常用的PHP实现文件上传的方法。使用HTML表单实现文件上传HTML表单是Web开发中最基本的元素之一,它可以接收用户输入的数据,并通过HTTP协议将数据提交到服务器端。在HTML表单中,可以使用元素来实现文件上传的功能。在

ReactNative中升级IOS 17版本Crash解决

ReactNative中升级IOS17版本Crash解决ReactNative中升级IOS17版本Crash解决一、问题描述二、原因分析三、解决方案决策3.1设置宽高为非零值3.2使用新的UIGraphicsImageRenderer替换就版本的UIGraphicsBeginImageContext四、可能使用到该AP

构建无缝的服务网格体验:分享在生产环境中构建和管理服务网格的最佳实践

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

Go 微服务开发框架 DMicro 的设计思路

Go微服务开发框架DMicro的设计思路DMicro源码地址:Gitee:dmicro:dmicro是一个高效、可扩展且简单易用的微服务框架。包含drpc,dserver等背景DMicro诞生的背景,是因为我写了10来年的PHP,想在公司内部推广Go,公司内部的组件及rpc协议都是基于swoole定制化开发的。调研了市

个人所思所想录

🧑‍💻作者名称:DaenCode🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开发。技术尚浅,闭关学习中······😎人生感悟:尝尽人生百味,方知世间冷暖。📖所属专栏:项目所感所想文章目录🌟绪论🌟编

平价护眼台灯推荐,2023百元台灯性价比最高的品牌推荐

想要选好护眼台灯首先我们要知道什么是护眼台灯,大的方向来看,护眼台灯就是可以保护视力的台灯,深入些讲就是具备让灯发出接近自然光特性的光线,同时光线不会伤害人眼而出现造成眼部不适甚至是视力降低的照明设备。从细节上看就要具体到护眼台灯的设计、硬核技术、贴心细节、光源的把控等等,灯光的覆盖面积也是关键,综合下才能确定什么才是

Linux- inode & vnode

什么是inodeinode是UNIX和UNIX-like操作系统中的一个关键概念。它代表了文件系统中文件或目录的元数据。每个文件和目录在文件系统中都有一个与之关联的inode。这个数据结构存储了关于文件的所有信息,除了其名称和实际数据之外。以下是inode中通常包含的信息:文件类型:如常规文件、目录、字符设备、块设备、

java版工程管理系统Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理工程项目各模块及其功能点清单一、系统管理1、数据字典:实现对数据字典标签的增删改查操作2、编码管理:实现对系统编码的增删改查操作3、用户管理:管理和查看用户角

C++——内存管理

目录C/C++内存分布C++内存管理方式new/delete操作内置类型new和delete操作自定义类型new失败operatornew与operatordelete函数new和delete实现原理内置类型自定义类型定位new常见问题malloc/free和new/delete的区别C/C++内存分布栈又叫堆栈--非

Puppeteer无头浏览器:开启自动化之门,掌握浏览器世界的无限可能

大概还是入门期,我曾用Puppeteer做爬虫工具以此来绕过某网站的防爬机制。近期有需求要做任意链接网页截图,像这种场景非常适合用Puppeteer完成。无头浏览器我已知的还有Selenium。完成截图需求踩的最大的坑不是具体的逻辑代码,而是Docker部署Puppeteer到服务器总是缺少某个包。踩坑过程我想另外写一

如何利用软文推广进行SEO优化(打造优质软文,提升网站排名)

在当今的互联网时代,SEO优化成为了网站推广的关键。而软文推广作为一种有效的推广方式,其优点不仅仅局限于SEO,还可以带来更多的曝光和用户流量。本文将深入探讨如何做好软文推广,从而提升网站排名和流量。了解目标受众群体内容在进行软文推广之前,需要对目标受众群体进行详细的了解。包括年龄、性别、职业、喜好等方面,以便准确把握

热文推荐