c#学习记录-文件操作

文件操作/文件夹操作

文件夹会创建在\bin\Debug\net6.0

namespace _23_文件操作
{internal class Program{static void Main(string[] args){-------------------文件操作File--------------//复制方法1FileInfo myFile = new FileInfo("E:\\VScodes\\第四季-高级编程\\23-文件操作\\TextFile1.txt");if (!myFile.Exists)myFile.CopyTo("E:\\VScodes\\第四季-高级编程\\23-文件操作\\TextFile2.txt");//复制方法2if (!myFile.Exists)File.Copy("E:\\VScodes\\第四季-高级编程\\23-文件操作\\TextFile1.txt","E:\\VScodes\\第四季-高级编程\\23-文件操作\\TextFile3.txt");//修改时间myFile.CreationTime = DateTime.Now;myFile.LastAccessTime = DateTime.Now;myFile.LastWriteTime = DateTime.Now;Console.WriteLine(myFile.Extension);Console.WriteLine(myFile.FullName);Console.WriteLine(myFile.Length);-----------------文件夹操作Directory--------------DirectoryInfo myDirectory = new DirectoryInfo(@"create");myDirectory.Create();Console.WriteLine(myDirectory.FullName);Directory.CreateDirectory("E:\\VScodes\\第四季-高级编程\\23-文件操作\\bin\\Debug\\net6.0\\create\\sondirectory");if (myDirectory.FullName != "E:\\VScodes\\第四季-高级编程\\23-文件操作\\bin\\Debug\\net6.0\\create")myDirectory.MoveTo("newcreate");Console.WriteLine(myDirectory.FullName);FileSystemInfo[] fileInfo = myDirectory.GetFileSystemInfos();foreach (var item in fileInfo){Console.WriteLine(item.FullName);}DirectoryInfo myFolder = new DirectoryInfo(@"c:\program files");}}
}

流操作

流是比喻成水流,一片海很难一次性运动,但一瓢一瓢舀还是能移动

流是一个用于传输数据的对象,数据可以向两个方向传输:
如果数据从外部源传输到程序中,这就是读取流
如果数据从程序传输到外部源中,这就是写入流
FileStream(文件流) 这个类用于任意文件(包括二进制文件)中读写。
StreamReader(流读取器)和StreamWriter(流写入器)专门用于读写文本文件

文件的操作是消耗内存的,如果不用流,大文件会占很多内存,用流可以减少内存消耗

新建FileStream流,需要3个参数,具体可以查阅资料【C# 教程系列第 19 篇】FileMode,FileAccess 的参数释义_c# filemode_Allen Su的博客-CSDN博客

操作完,记得关闭流:顺序:先开后关,后开先关;先关闭独立需要依赖的文件,后关闭被依赖文件

Console.WriteLine("-----------------读取写入流--------------");FileStream readFileStream = new FileStream("D:\\Halcon安装包\\halcon-12.0-windows-64.exe",FileMode.Open,FileAccess.Read);//readFileStream.ReadByte();//一个字节一个字节的读,读完后返回-1//复制字节,注意模式,需要先建立一个文件,文件路径是不存在的FileStream writeFileStream = new FileStream("E:\\VScodes\\第四季-高级编程\\copyfile.exe", FileMode.Create, FileAccess.Write);//writeFileStream.WriteByte(0);int nextByte = -1;while((nextByte = readFileStream.ReadByte()) != -1){//把读到的写入新文件writeFileStream.WriteByte((byte)nextByte);}//先开的流后关,后开先关writeFileStream.Close();readFileStream.Close();

 修改读取数据:

不再用readbyte和writebyte,改为read,write

readFileStream.Read会放回读取的长度,读完之后返回0

FileStream readFileStream = new FileStream("D:\\Halcon安装包\\halcon-12.0-windows-64.exe", FileMode.Open, FileAccess.Read);FileStream writeFileStream = new FileStream("E:\\VScodes\\第四季-高级编程\\copyfile.exe", FileMode.Create, FileAccess.Write);DateTime befor1 = DateTime.Now;byte[] buffer = new byte[1024];int count = -1;while((count = readFileStream.Read(buffer,0,1024))!=0){writeFileStream.Write(buffer, 0, count);}DateTime after1 = DateTime.Now;TimeSpan ts1 = after1 - befor1;writeFileStream.Close();readFileStream.Close();Console.WriteLine(ts1.TotalMilliseconds);

一般读写流操作

注意创建时:,最后一个参数设置为覆盖模式(false默认),还是追加模式(true)

StreamWriter writer = new StreamWriter(destination, true);//追加的方式添加文本

string sourceFile = "E:\\VScodes\\第四季-高级编程\\23-文件操作\\TextFile2.txt";string destination = "E:\\VScodes\\第四季-高级编程\\23-文件操作\\TextFile4.txt";StreamReader reader = new StreamReader(sourceFile);//StreamWriter writer = new StreamWriter(destination,false);//会覆盖StreamWriter writer = new StreamWriter(destination, true);//追加的方式添加文本//string line = null;//while ((line = reader.ReadLine()) != null)//    writer.WriteLine(line);string nextLine = reader.ReadLine();//读一行Console.WriteLine(nextLine);int nextchar = reader.Read();//读一个字符ascii码Console.WriteLine(nextchar);int nChars = 10;char[] charArray = new char[nChars];int nCharsRead = reader.Read(charArray, 0, nChars);foreach (char c in charArray){ Console.WriteLine(c); }string restOfStream = reader.ReadToEnd();//把剩下的读完Console.WriteLine(restOfStream);writer.Close();reader.Close();

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

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

相关文章

状态模式(C++)

定义 允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。 应用场景 在软件构建过程中,某些对象的状态如果改变,其行为也会随之,而发生变化,比如文档处于只读状态,其支持的行为和读写…

xshell新建文件传输失败-使用sftp如何上传及下载数据

问题描述 我在使用xshell时,点击操作栏中的新建文件传输,报错为:要继续使用此程序,您必须应用最新的更新或使用新版本,然后就给我跳到了sftp界面,界面上显示的是当前目录,我要下载数据到本地。 …

C++中动态数组的使用

C中动态数组的使用 假设要在应用程序中存储医院的病历,程序员将无法知道需要处理的病历数上限。就小医院而言,为稳妥起见,程序员可对上限做合理的假设。在这种情况下,程序员将预留大量的内存,进而降低系统的性能。 为…

仅使用 CSS 创建打字机动画效果

创建打字机效果比您想象的要容易。虽然实现这种效果的最常见方法是使用 JavaScript,但我们也可以使用纯 CSS 来创建我们的打字机动画。 在本文中,我们将了解如何仅使用 CSS 创建打字机动画效果。它简单、漂亮、容易。我们还将看看使用 CSS 与 JavaScrip…

全球互联网步入IPv6时代,IPv4逐渐告别历史舞台

随着互联网技术的飞速发展,全球互联网正迎来IPv6与IPv4并存转型阶段。IPv6, 新一代互联网协议,以其更大的地址空间和更高的效率正逐渐取代IPv4成为互联网的主导。 全球互联网开始全面实施IPv6这意味着IPv4时代正在逐渐走向尾声。IPv4与IPv6为互联网协议版…

【Spring Boot】了解Spring Boot 的日志文件

目录 一、日志的作用 二、日志文件的简单使用 1、Spring Boot中的默认日志 2、自定义日志打印 三、日志级别 1、日志级别分类 2、日志级别的设置 3、日志持久化 四、基于LomBok的日志输出 1、安装Lombok插件 2、使用Lombok添加日志 3、使用Lombok添加getter和setter…

Java关键字:final解析

目录 一、final变量 二、final方法 三、final类 final是Java语言中的一个关键字,凡是被final关键字修饰过的内容都是不可改变的。 一、final变量 final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。通常&#xff0…

C++STL简介

1.STL简介 1.1.STL的概念 STL(standard template libaray即:“标准模板库”)是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。 1.2.STL的版本 原始版本:Alexander Stepanov、Meng …

SAM 大模型Colab快速上手【Segment Anything Model】

Google Colab 是一个基于云的 Jupyter 笔记本环境,允许您通过浏览器编写、运行和共享 Python 代码。 它就像 Google 文档,但用于代码。 通过免费版本的 Google Colab,你可以获得带有约 16GPU VRAM 的 Nvidia Tesla T4 GPU,这对于…

centos手动离线安装php,nginx

1、CentOS 7上安装并配置Nginx https://www.cnblogs.com/xujiecnblogs/p/16843984.html /usr/local/nginx/sbin/nginx #启动 /usr/local/nginx/sbin/nginx -s stop #关闭 /usr/local/nginx/sbin/nginx -s reload #重启 增加h…

解决K8S集群设置污点后,污点不生效,下发应用的问题

问题:在集群中部署了三个daemonset,一开始加了容忍Toleration,后边去掉Toleration后,还是一直往边缘节点上部署应用,非常离谱 解决:删掉Toleration后,需要把annotations一起删掉,因为…

区块链媒体发稿:区块链媒体宣发常见问题解析

据统计,由于区块链应用和虚拟货币的兴起,越来越多媒体对区块链领域开展报导,特别是世界各国媒体宣发全是热火朝天。但是,随着推卸责任媒体宣发的五花八门,让很多人因而上当受骗,乃至伤害一大笔资产。身为投…

打破雇佣思想 云畅科技CIO曾颖博士浅析零雇工模式

作者简介 INTRO 曾 颖 工商管理博士 云畅科技高级合伙人、CIO 产业咨询&企业数字化转型落地专家 2018年,“零雇工”企业组织创新2018全球创新创业教育高峰论坛在西安举行,我当时作为上海沐新众创空间的导师和分会场“企业家如何创建零雇工…

6.pip简介,第三方库的安装

引言 使用过Visual Studio的小伙伴可能对npm不陌生,没错,pip与npm的功能是一样的。 首先要知道,Python这门语言拥有着丰富的标准库以及先辈们开发的各种功能强大的第三方库。而今天我们主要学习的呢就是关于Python中的包管理工具。它是Pytho…

模仿火星科技 基于cesium+ 贴地测量+可编辑

当您进入Cesium的编辑贴地测量世界,下面是一个详细的操作过程,帮助您顺利使用这些功能: 1. 创建提示窗: 启动Cesium应用,地图场景将打开,欢迎您进入编辑模式。在屏幕的一角,一个友好的提示窗将…

Java基础入门篇——While循环(十二)

目录 一、循环结构语句 二、while循环语句 三、do-while循环语句 四、break使用 一、循环结构语句 在实际生活中经常会将同一件事情重复做很多次。例如,在做眼保健操的第四节轮刮眼眶时,会重复刮眼眶的动作:打乒乓球时,会重复…

车云一体化系统基础理论

车云一体化系统基础理论 介绍目标正文 参考文档 介绍 最近在调研车云链路一体化的整套解决方案,涉及分布式消息队列(RocketMQ)、分布式存储(Doris)、离线数据处理(Spark)、用户行为日志分析&am…

华为OD真题--字符串加密

2023华为OD统一考试(AB卷)题库清单-带答案(持续更新)or2023年华为OD真题机考题库大全-带答案(持续更新) "给你一串未加密的字符串str,通过对字符串的每一个字母进行改变来实现加密&#xf…

maven配置settings文件,包含配置阿里云镜像,配置maven私服,配置私服密码

配置阿里云镜像 <!-- 多个相同 mirrorOf 的 mirror配置&#xff0c;会根据他们声明的顺序 决定优先级 --><!--阿里云仓库地址来源 see https://developer.aliyun.com/mvn/guide--><mirror><id>aliyunMaven01</id><name>aliyun maven</n…

vuejs 设计与实现 - 双端diff算法

我们介绍了简单 Diff 算法的实现原理。简单 Diff 算法利用虚拟节点的 key 属性&#xff0c;尽可能地复用 DOM元素&#xff0c;并通过移动 DOM的方式来完成更新&#xff0c;从而减少不断地创建和销毁 DOM 元素带来的性能开销。但是&#xff0c;简单 Diff 算法仍然存在很多缺陷&a…