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.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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/83823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯mini项目-【指标监控服务重构】2023-08-18

今日已办 watermill 将 key 设置到 message 中 修改 watermill-kafka 源码 将 key 设置到 message.metadata中 接入 otel-sdk 添加 middleware resolveUpstreamCtx 解析上游上下文,开启根Span添加 middleware middleware.InstantAck - 马上ACK,使得多…

面试Java后端

sql 五表联合查询 面试八股 JDK,JRE,JVM之间的区别 JDK,Java标准开发包,它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行时环境,以及常用的Java类库等。 JRE(Java Runtime Environment)&…

Learn Prompt-Prompt 高级技巧:AI-town 虚拟小镇

AI-town可能是2023年最令人鼓舞的AI代理实验之一。我们经常讨论单个LLM的突现能力,但 Agents 突现在大规模下可能会更复杂和迷人。一个AI的种群可以展现出整个文明的演化。 🎉开始阅读前,如果你对其他文章感兴趣,可以到欢迎页关注…

Anaconda下载安装教程,新手详细

Anaconda的安装包下载分为官网下载和清华源下载, ①官网:Anaconda官网 (别的博主说官网较慢,有时候还进不去,我感觉还行,2分钟就下载好了。如果不顺利,请尝试使用清华源) ②清华源…

机器学习入门教学——损失函数(极大似然估计法)

1、前言 我们在训练神经网络时,最常用到的方法就是梯度下降法。在了解梯度下降法前,我们需要了解什么是损失(代价)函数。所谓求的梯度,就是损失函数的梯度。如果不知道什么是梯度下降的,可以看一下这篇文章:机器学习入…

性能测试 —— Tomcat监控与调优:status页监控

Tomcat服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Foundation)Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。 Tomcat是一个轻量级应用服务器,在中小型系统…

DevExpress WinForms图表组件 - 直观的数据信息呈现新方式!(一)

凭借界面控件DevExpress WinForms全面的2D和3D图表类型的集合,DevExpress WinForms的图表控件设计大大简化了开发者直观地向最终用户呈现信息的方式。 DevExpress WinForms有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。同时能完…

IDEA——工程项目的两种窗口开发模式

文章目录 引言一、多项目窗口模式的便利1.1 源码 debug 二、多项目窗口模式的弊端三、多项目窗口的版本管理四、单项目、多项目窗口模式转换 引言 idea编辑器有两种窗口模式,一种是单项目窗口,另一种是多项目窗口。 我个人使用较多的是单项目窗口&#…

Android7.1 ROOT权限的获取

修改文件: system/extras/su/su.c system/core/include/private/android_filesystem_config.h system/core/libcutils/fs_config.c frameworks/base/core/jni/com_android_internal_os_Zygote.cpp frameworks/base/cmds/app_process/app_main.cpp device/qcom…

JSON字符串之JS中JSON.parse()

JSON.parse() 方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象。提供可选的 reviver 函数用以在返回之前对所得到的对象执行变换(操作)。 const json {"result":true, "count":42}; const obj JSON.parse(json);console.log(ob…

Linux 多线程 | 线程安全、死锁、线程同步

在前面的文章中我们讲述了锁的理解、原理、用户级线程库的内容,以及对Linux中的锁和线程进行了封装,本文中将继续对多线程的内容进行讲解。 可重入与线程安全 概念 线程安全:多个线程并发同一段代码时,不会出现不同的结果。常见…

网络安全第一次作业

1、什么是防火墙 防火墙是一种网络安全系统,它根据预先确定的安全规则监视和控制传入和传出的网络流量。其主要目的是阻止对计算机或网络的未经授权的访问,同时允许合法通信通过。 防火墙可以在硬件、软件或两者的组合中实现,并且可以配置为根…

七绝 . 秋寒

题记 拜读署名“淡定人生D”近日发表在“ 今日头条 ”上的古体诗《七绝 . 凉》,本老朽在由衷赞叹该女子才貌双全之时,也对自己寄居养老的成都崇州街子古镇今日下午的秋寒突至天气,情怀涌动,思绪万千,亦作《七绝 . 秋寒…

课程29:.Net Core API限流

🚀前言 本文是《.Net Core从零学习搭建权限管理系统》教程专栏的课程(点击链接,跳转到专栏主页,欢迎订阅,持续更新…) 专栏介绍:以实战为线索,基于.Net 7 + REST + Vue、前后端分离,不依赖任何第三方框架,从零一步一步讲解权限管理系统搭建。 专栏适用于人群:We…

JavaScript小案例-树形菜单(菜单数据为数组)

菜单层级理论上可以无限多&#xff0c;因为是递归渲染。 gif演示图&#xff1a; 代码&#xff1a; 树形菜单.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content&quo…

超越创意,从用户创造内容到AI生成内容的新时代

在这个信息爆炸的时代&#xff0c;内容创作正经历前所未有的变革&#xff0c;其频率和多样性令人瞠目结舌。曾经&#xff0c;我们主要依赖传统媒体&#xff0c;需要专业团队为人们打造内容&#xff0c;这被称为专业生成内容&#xff08;PGC&#xff0c;Professional-generated …

vue3 reactive使用(四)

1&#xff1a;reactive全家桶 rective直接赋值无效&#xff0c;会破坏proxy响应式代理 const newList reactive<string[]>([]) const newCreate () > {setTimeout(() > {const res [生活, 升华, 生生不息]newList res console.log(newList:, newList) // d…

MD5加密算法

1、简介 MD5在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明&#xff0c;经MD2、MD3和MD4发展而来。 MD5将任意长度的“字节串”变换成一个128bit的大整数&#xff0c;并且它是一个不可逆的字符串变换算法&#xff0c;换句话说就是&#xff0c;即使你看到源程序…

IO口电路种类

文章目录 参考1.高速振荡电路&#xff08;时钟IO引脚&#xff09;2.与 GPIO 功能共享的低速振荡电路&#xff08;子时钟IO&#xff09;3.CMOS 滞后输入引脚4.电源输入保护电路5.A/D 转换器 ref (AVRH)带保护电路的电源输入端6.CMOS 电平输出7.CMOS 电平输出&#xff0c;带有模…

sublime text3 设置代码错误提示之php

第一步&#xff1a; ctrlshiftp 输入 install package 并选中 第二步&#xff1a; 输入 sublimelinter-php 第三步&#xff1a; Prefernces> package Settings >Sublimelinter > settings 这里不同按照版本可能不一样 有些可能是 settings User 第四步 完成