FileStream文件管理

文件管理

FileStream:是一个用于读写文件的一个类。它提供了基于流的方式操作文件,可以进行读取、写入、查找和关闭等操作。

第一个参数:path(路径)
相对路径:相对于当前项目的bin目录下的Debug和Realse来说的,只关乎要找的东西在哪,忽略外层地址。(@“”)
绝对路径:D:\WinForms\文件管理\bin (从外向内都直接指向了要查找的文件。)
第二个参数:FileMode
CreateNew = 1,
Create, 创建一个新的文件,如果文件存在,则覆盖该文件
Open, 打开一个已有的文件,如果文件不存在,则抛出异常
OpenOrCreate, 打开一个已有的文件,如果文件不存在,则按照指定路径创建一个新的文件并打开
Append 打开一个已经存在的文件,并将位置锁定到文件的末尾进行追加,不存在则创建

第三个参数:FileAccess(文件的读写权限)

首先我们先创建一个winform窗体,拖出下图示例的控件⬇

在这里插入图片描述

文本文件写入

private void btnWrite_Click(object sender, EventArgs e) {//创建文件流FileStream fileStream = new FileStream(@"myfile.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);//2、创建写入器StreamWriter writer = new StreamWriter(fileStream);//3、以流的形式写入数据writer.Write(this.textBox1.Text);//4、关闭写入器,注意这一步的目的是为了清理写入器中的缓存,证明已经写入成基础流了,所以要关闭writer.Close();//5、关闭文件流fileStream.Close();
}

读取文件内容

  private void btnRead_Click(object sender, EventArgs e) {FileStream fileStream = new FileStream(@"myfile.txt", FileMode.Open);StreamReader reader = new StreamReader(fileStream);//读取来自指定位置的流,直到结尾的所有字符this.textBox1.Text = reader.ReadToEnd();reader.Close();fileStream.Close();}

模拟写入系统日志

 private void btnLog_Click(object sender, EventArgs e) {try {FileStream fs = new FileStream(@"故意写一个不存在的文件.txt", FileMode.Open);} catch (Exception ex) {//日志错肯定不止一个,所以选用追加FileStream fileStream = new FileStream(@"文件操作项目的错误日志.log", FileMode.Append);StreamWriter streamWriter = new StreamWriter(fileStream);streamWriter.WriteLine(DateTime.Now.ToString() + ":[操作文件异常]" + ex.Message);streamWriter.Close();fileStream.Close();}}

删除文件

 private void btnDelete_Click(object sender, EventArgs e) {string deleteStr = this.txtOrigin.Text;File.Delete(deleteStr);}

复制文件

 private void btnCoppy_Click(object sender, EventArgs e) {//1、首先判断目标路径文件是否存在(如果文件存在,直接复制会报错) if (File.Exists(this.txtTarget.Text)) {//存在,删除File.Delete(this.txtTarget.Text);}//复制文件File.Copy(this.txtOrigin.Text, this.txtTarget.Text);}

移动文件

private void btnMove_Click(object sender, EventArgs e) {if (File.Exists(this.txtTarget.Text)) {//存在,删除File.Delete(this.txtTarget.Text);}//如果当前文件存在才移动if (File.Exists(this.txtOrigin.Text)) {//存在,则删除File.Move(this.txtOrigin.Text, this.txtTarget.Text);} else {MessageBox.Show("要移动的文件不存在");}
}

显示指定目录下的所有文件

 private void showFolder_Click(object sender, EventArgs e) {string[] files = Directory.GetFiles(this.txtFolder.Text);textBox1.Text = "";for (int i = 0; i < files.Length; i++) {this.textBox1.Text += (i + 1) + "\t" + files[i] + "\r\n";}}

显示指定目录下所有子目录

private void button2_Click(object sender, EventArgs e) {string[] files = Directory.GetFileSystemEntries(this.txtFolder.Text);textBox1.Text = "";for (int i = 0; i < files.Length; i++) {this.textBox1.Text += (i + 1) + "\t" + files[i] + "\r\n";}
}

在指定目录下创建一个子目录

  private void button3_Click(object sender, EventArgs e) {Directory.CreateDirectory(this.txtFolder.Text);}

删除指定目录下所有子目录和文件

 private void button4_Click(object sender, EventArgs e) {//File与FileInfo都能实现,区别就是静态方法和实例方法//Directory与DirectoryInfo也都能实现,也是静态方法实例方法的区别//删除的是不能为空的目录//DirectoryInfo directoryInfo = new DirectoryInfo(this.txtFolder.Text);//参数表示是否删除子目录和文件,//true:强制删除,false:该文件夹必须为空才可以删除//directoryInfo.Delete(true);Directory.Delete(this.txtFolder.Text, true);}

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

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

相关文章

[嵌入式AI从0开始到入土]10_yolov5在昇腾上应用

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注&#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间&#xff0c;后期会考虑出视频教程&#xff0c;务必催更&#xff0c;以防我变身鸽王。 第一章 昇腾Altas 200 DK上手 第二章 下载昇腾案例并运行 第三章…

【AI视野·今日NLP 自然语言处理论文速览 第七十一期】Fri, 5 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Fri, 5 Jan 2024 Totally 28 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers LLaMA Pro: Progressive LLaMA with Block Expansion Authors Chengyue Wu, Yukang Gan, Yixiao Ge, Zeyu Lu, …

java导出word套打

这篇文档手把手教你完成导出word套打&#xff0c;有这个demo&#xff0c;其他word套打导出都通用。 1、主要依赖 <!--hutool--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.3.0</ve…

IPv6路由协议---IPv6动态路由(RIPng)

IPv6动态路由协议 动态路由协议有自己的路由算法,能够自动适应网络拓扑的变化,适用于具有一定数量三层设备的网络。缺点是配置对用户要求比较高,对系统的要求高于静态路由,并将占用一定的网络资源和系统资源。 路由表和FIB表 路由器转发数据包的关键是路由表和FIB表,每…

CreateDIBSection失败的问题记录

错误记录 [ERROR] (:0, ): QPixmap::fromWinHICON(), failed to GetIconInfo() (操作成功完成。) [ERROR] (:0, ): QPixmap::fromWinHICON(), failed to GetIconInfo() (参数错误。) [ERROR] (:0, ): QPixmap::fromWinHICON(), failed to GetIconInfo() (参数错误。) [ERROR] …

升级 Vite 5 出现警告 The CJS build of Vite‘s Node API is deprecated.

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

数仓建设学习路线(一)

前言 数仓建设实践路线是语兴发布在B站的系列课程&#xff0c;搜索语兴呀即可学习完整的数仓建设理论。 大数据相关岗位 大数据常见的岗位主要包括实时开发、数据治理、数据安全、数据资产等。 其中&#xff1a; 实时开发组的主要任务是实时可视化制作(大屏/彩蛋/战报&…

前端结合MQTT实现连接 订阅发送信息等操作 VUE3

MQTT客户端下载 使用测试 在我之前文章中 MQTT下载基础使用 下面记录一下前端使用的话的操作 1.安装 npm i mqtt引入 import * as mqtt from "mqtt/dist/mqtt.min"; //VUE3 import mqtt from mqtt //VUE2 一、MQTT协议中的方法 Connect。等待与服务器建立连接…

[VUE]2-vue的基本使用

目录 vue基本使用方式 1、vue 组件 2、文本插值 3、属性绑定 4、事件绑定 5、双向绑定 6、条件渲染 7、axios 8、⭐跨域问题 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅…

气膜建筑:舒适、智能、可持续

气膜建筑之所以能够拥有广阔的发展空间&#xff0c;源于其融合了诸多优势特点&#xff0c;使其成为未来建筑领域的前沿趋势。 气膜建筑注重环境可持续性和能源效率。在材料和设计上&#xff0c;它采用可回收材料、提高热保温效果&#xff0c;并积极利用太阳能等可再生能源&…

【洛谷学习自留】p9226 糖果

解题思路&#xff1a; 简单的计算题&#xff0c;用n对k取余&#xff0c;如果余数为0&#xff0c;则输出k的值&#xff0c;否则输出&#xff08;k-余数&#xff09;的值。 代码实现&#xff1a; import java.util.Scanner;public class p9226 {public static void main(Strin…

【2023 CCF 大数据与计算智能大赛】基于TPU平台实现超分辨率重建模型部署 基于QuickRNet的TPU超分模型部署

2023 CCF 大数据与计算智能大赛 《赛题名称》 基于QuickRNet的TPU超分模型部署 巴黎欧莱雅 林松 智能应用业务部算法工程师 中信科移动 中国-北京 gpu163.com 团队简介 巴黎欧莱雅团队包含一个队长和零个队员。 队长林松&#xff0c;研究生学历&#xff0c;2019-202…

【一份老网工珍藏多年的网络配置笔记,很重要!】

01、交换机、路由器的几种配置模式及模式转换 1. 用户模式 登录到交换机&#xff08;路由器&#xff09;时会自动进入用户模式&#xff0c;提示符为 switchname>。在该模式下只能够查看相关信息&#xff0c; 对 IOS的运行不产生任何影响。 2. 特权模式 用户模式下&#xff…

精进单元测试技能 —— Pytest断言的艺术!

本篇文章主要是阐述Pytest在断言方面的应用。让大家能够了解和掌握Pytest针对断言设计了多种功能以适应在不同测试场景上使用。 了解断言的基础 在Pytest中&#xff0c;断言是通过 assert 语句来实现的。简单的断言通常用于验证预期值和实际值是否相等&#xff0c;例如&#…

蒙牛×每日互动合作获评中国信通院2023“数据+”行业应用优秀案例

当前在数字营销领域&#xff0c;品牌广告主越来越追求品效协同。针对品牌主更注重营销转化的切实需求&#xff0c;数据智能上市企业每日互动&#xff08;股票代码&#xff1a;300766&#xff09;发挥自身数据和技术能力优势&#xff0c;为垂直行业的品牌客户提供专业的数字化营…

实时云渲染的技术原理是什么?一篇文章讲透云渲染

实时云渲染依赖互联网的连接和高性能服务集群&#xff0c;为客户实时提供渲染画面&#xff0c;它有以下几个关键技术&#xff1a; 1、GPU上云 利用云服务器强大的GPU替代本地GPU进行图形处理&#xff0c;提高性能、可替换性和扩展性。2、视频流化技术 这项技术能在远程执行用户…

【ArcGIS微课1000例】0087:经纬度格式转换(度分秒转度、度转度分秒)

ArcGIS软件可以很方便的直接实现度分秒转度、度转度分秒。 文章目录 一、转换预览二、工具介绍三、案例解析一、转换预览 借助ArcGIS快速实现度分秒与度及其他格式的坐标转换。例如:度分秒→度 度分秒: 度: 二、工具介绍 转换坐标记法:将一个或两个字段包含的坐标记法从一…

XREAL推出其新款AR眼镜:XREAL Air 2 Ultra,体量轻内置音效

这款眼镜堪称科技的杰作&#xff0c;它以钛合金为框架&#xff0c;尽显轻盈与精致。配备的双3D环境传感器&#xff0c;宛如双眼般敏锐&#xff0c;能精准捕捉头部运动&#xff0c;让你在虚拟与现实间自由穿梭。120Hz的超高刷新率与500尼特的亮度&#xff0c;让你在4米之外感受1…

搭建React开发环境-webpack实现

周末在家学会React前端知识&#xff0c;记录下来&#xff0c;方便备查。 webpack版本&#xff1a;webpack5 编译器&#xff1a;vscode 第一步、新建项目及初始化 1&#xff09;新建项目文件夹 可命名为 my_webpack 2&#xff09;初始化项目 使用命令 npm init -y&#xff0c;…

Centos7 MongoDB安装

基础配置&#xff08;Centos7.5镜像&#xff0c;2核2GB内存&#xff0c;50GB硬盘&#xff09; 主机名IPmongodb192.168.100.124 &#xff08;在MongoDB官网有linux安装MongoDB的步骤&#xff09; &#xff08;1&#xff09;配置yum源 [rootmongodb ~]# cat /etc/yum.repos.d…