C#文件操作(一)

news2024/11/15 17:27:33

一、前言

        学习心得:C# 入门经典第8版书中的第20章《文件》

二、操作文件的相关类

        在C#应用程序中Syste.IO名称空间包含用于在文件中读写数据的类。在此我列举一下File、Directory、Path、FileInfo、DirectoryInfo、FileSystemInfo、FileSystemWatcher。其中在System.IO.Compression名称空间中还包含读写压缩文件。DeflateStream、GZipStream。这两个在后续文章中我会慢慢提到解释,但由于大量方法在网上都可以查找得到,本节我仅仅只介绍部分方法。

三、File和Directory类

1 File 类

        File通常用于操作文件的静态类(Copy、Create、Delete、Open、Move) 都是些常见的静态方法这里不做介绍,大家如不了解使用可以查一查。

2 Directory类

        Directory通常用于操作文件夹的静态类,其中DIcrectory中有很多方法如: CreateDirectory 创建目录、Delete 删除目录、GetDirectories 获得指定目录下的目录名、GetFiles  获得指定目录下的文件名、GetFileSystemEntries 获取指定目录下的目录名和文件名、Move 移动文件、GetCurrentDirectory 获取应用程序的工作目录 GetCreationTime 获取目录创建的事件等很多方法都很简单使用。

举个例子:

Directory.CreateDirectory(@"C\目录");
Directory.GetDirectories(@"C\目录");
Directory.GetFiles(@"C\目录");
Directory.GetFileSystemEntries(@"C\目录");
Directory.GetCurrentDirectory();
Directory.GetCreationTime(@"\目录");
Directory.Delete(@"C\目录");
//返回目录名的IEnumerable<string>集合
IEnumerable<string> s = Directory.EnumerateDirectories(@"C:\Users\Administrator\Desktop\练习\bin\Debug");
//返回文件名的IEnumerable<string>集合
IEnumerable<string> s2 = Directory.EnumerateFiles(@"C:\Users\Administrator\Desktop\练习\bin\Debug");
//返回文件和目录名的IEnumerable<string>集合
IEnumerable<string> s3 = Directory.EnumerateFileSystemEntries(@"C:\Users\Administrator\Desktop\练习\bin\Debug");

四、FileInfo类 

        FileInfo类和File有很多相似的方法,但它不是静态类,它需要一个字符串参数,作为方法操作的文件路径。其次FileInfo对象是表示一个磁盘位置或者网络位置。

举个例子:

 //使用File类需要每次指定文件路径
 File.Open(@"C\",FileMode.Open,FileAccess.Read);

 //使用Fileinfo指定一次后方法都是对当前路径进行操作
 FileInfo fileInfo = new FileInfo(@"C\");
 if (fileInfo.Exists)
 {
     //读取
    fileInfo.OpenRead();
 }

问:什么时候使用File什么时候使用FileInfo?


 答:在多次对一个文件操作时使用FileInfo ,因为它不需要重复指明操作路径。但如果只对文件操作一次的情况下推荐还是使用File静态类因为它不需要创建对象,单一调用要快一点,不必实例化新对象在调用方法 。

提示:路径中@“C\” 前面的@ 是代表取消当前字符串的转义符效果,不加@则需要将\改为\\才能代表\的含义。

五、DirectoryInfo 类

        DirectoryInfo 与Directory类,类似,在使用选择上也和上述File和FileInfo的使用场景类似。其中它有两个特别的属性。

 DirectoryInfo directoryInfo = new DirectoryInfo(@"C\菜板");
 //获取一个包含当前目录的目录
var s= directoryInfo.Parent;
 //获取包含目录的根目录
var str= directoryInfo.Root;

六、相对路径与绝对路径

        在文章当中我们使用的路径都是绝对路径。绝对路径是它直接指向了磁盘中的文件所在位置但我们也可以使用相对路径来指定我们文件所在的位置。使用“文件名称.后缀名”

举个例子:

//在 项目文件\bin\Debug\中创建了文件夹
var str =  Directory.CreateDirectory("A文件夹");

示例解释:

        "A文件夹"代表的文件就是指 项目文件\bin\Debug 路径下创建一个“A文件夹”为名称的文件夹。相对位置都是指向工作目录, 工作目录就是=>项目文件\bin\Debug。

效果:

 

提示:获取相对位置,上移一个目录路径使用..代表当前目录的上一个目录。

举个例子(在bin目录中创建文件夹):

 var str =  Directory.CreateDirectory(@"..\A文件夹");

 本章还有大部分内容,我们下一篇见!!!

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

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

相关文章

pnpm :无法加载文件 D:\nodejs\node_global\pnpm.ps1,因为在此系统上禁止运行脚本

目录 一、问题描述 二、原因分析 三、解决问题 一、问题描述 pnpm : 无法加载文件 D:\learningsoftware\nodejs\node_global\pnpm.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?LinkID1351 70 中的 a…

文件包含 [SWPUCTF 2021 新生赛]include

打开题目 要求我们传入一个file进去&#xff0c;那我们get传入 /?file1 得到源码&#xff0c;并且提示我们flag在flag,php下 在源代码中&#xff0c;我们看见了allow_url_include函数&#xff0c;我们知道这涉及到文件包含。 一般默认allow_url_fopen是on的&#xff0c;那在…

线性回归中的似然函数、最大似然估计、最小二乘法怎么来的(让你彻底懂原理)收官之篇

图1 图2 图3 图4 问1&#xff1a;为什么要引入似然函数&#xff1f; 在线性回归中引入似然函数是为了通过概率统计的方法对模型参数进行估计。简单来说&#xff0c;我们希望找到一组参数&#xff0c;使得我们观测到的数据在给定这组参数的情况下最有可能发生。 问:1&#xf…

0155 - Java 数组

1 数组介绍 数组可以存放多个同一类型的数据。数组也是一种数据类型&#xff0c;是引用类型。 即&#xff1a;数(数据)组(一组)就是一组数据 2 数组的使用 2.1 使用方式一 2.2 使用方式二 3 数组使用注意事项和细节 数组是多个相同类型数据的组合&#xff0c;实现对这些数据…

Android Canvas状态save与restore,Kotlin

Android Canvas状态save与restore&#xff0c;Kotlin private fun f1() {val bitmap BitmapFactory.decodeResource(resources, R.mipmap.pic).copy(Bitmap.Config.ARGB_8888, true)val canvas Canvas(bitmap)val paint Paint(Paint.ANTI_ALIAS_FLAG)paint.color Color.RED…

信息收集 - 网站架构

网站架构组成 通常,一个典型的网站架构包括以下组件: 动态脚本语言:动态脚本语言用于处理网站的逻辑和动态内容生成。常见的动态脚本语言包括PHP、Python、Ruby和Node.js等。这些脚本语言可以根据用户请求生成动态的网页内容。 数据库:数据库用于存储网站的数据,包括用户…

网易面试:亿级用户,如何做微服务底层架构?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业网易、美团、字节、如阿里、滴滴、极兔、有赞、希音、百度、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 微服务改造&#xff0c;你是怎么做的&#xff1…

TransXNet实战:使用 TransXNet实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

路由表route

目录 Windows维护路由表&#xff0c;利用route命令&#xff0c;VPN完美异地组网什么是多网络环境这里我做个情景演示重置ipv4网络再次确认一下网络背景网关是什么多网络规划思路最后拓展内容实测一下网关切换选项网关的网关命令整理 Windows维护路由表&#xff0c;利用route命令…

补题与周总结:leetcode第 376 场周赛

文章目录 复盘与一周总结2967. 使数组成为等数数组的最小代价&#xff08;中位数贪心 回文数判断&#xff09;2968. 执行操作使频率分数最大&#xff08;中位数贪心 前缀和 滑窗&#xff09; 复盘与一周总结 wa穿了第3题&#xff0c;赛时其实想到了思路&#xff1a;中位数贪心…

中央空调冷却塔循环水全自动加药装置PH电导率设备工作原理动画

一&#xff1a;全自动加药装置【概述】 随着在给水、排水处理过程中&#xff0c;常常投加各类化学药剂作为阻垢、杀菌灭藻、混凝、絮凝用&#xff0c;以达到净化水的目的。这些药剂有固体颗粒、液体&#xff0c;在投加过程中必须溶解、稀释及按配比定量投加方能取得最佳效果&am…

GZ015 机器人系统集成应用技术样题6-学生赛

2023年全国职业院校技能大赛 高职组“机器人系统集成应用技术”赛项 竞赛任务书&#xff08;学生赛&#xff09; 样题6 选手须知&#xff1a; 本任务书共 25页&#xff0c;如出现任务书缺页、字迹不清等问题&#xff0c;请及时向裁判示意&#xff0c;并进行任务书的更换。参赛队…

DC-8靶场

目录 DC-8靶场链接&#xff1a; 首先进行主机发现&#xff1a; sqlmap得到账号密码&#xff1a; 反弹shell&#xff1a; exim4提权&#xff1a; Flag&#xff1a; DC-8靶场链接&#xff1a; https://www.five86.com/downloads/DC-8.zip 下载后解压会有一个DC-8.ova文件…

西门子S71200系列PLC通过PROFINET连接多功能电表

西门子S71200连接多功能电表 1、需求描述&#xff1a; 通过西门子S7-1200系列PLC&#xff0c;连接多功能电表&#xff0c;通过Modbus协议读写电表的数据。 2、方案描述&#xff1a; 桥接器的网口连接西门子S7-1200系列PLC的网口&#xff0c;串口连接到电表的485通讯口&#x…

反序列化 [SWPUCTF 2021 新生赛]ez_unserialize

打开题目 查看源代码 得到提示&#xff0c;那我们用御剑扫描一下看看 我们知道有个robots.txt&#xff0c;访问一下得到 那我们便访问一下 cl45s.php看看 得到网站源代码 <?phperror_reporting(0); show_source("cl45s.php");class wllm{public $admin;public …

Mysql的逻辑架构

一、Server层组件 1、连接器 连接器的作用是建立连接&#xff0c;管理权限&#xff0c;维持和管理连接 2、查询缓存 查询缓存的作用是以sql为key去查询缓存&#xff0c;如果缓存存在则直接返回结果 3、解析器 解析器的作用是对sql语句进行语法分析&#xff0c;和词法分析…

《深入理解计算机系统》学习笔记 - 第六课 - 机器级别的程序二

Lecture 06 Machine Level Programming II Control 机器级别程序控制二 文章目录 Lecture 06 Machine Level Programming II Control 机器级别程序控制二处理器的状态条件码&#xff08;隐式设置&#xff09;通过算术运算隐式设置条件码(将其视为副作用)通过cmp比较命令显示的设…

Python---TCP 的介绍

1. 网络应用程序之间的通信流程 之前我们学习了 IP 地址和端口号&#xff0c;通过 IP 地址能够找到对应的设备&#xff0c;然后再通过端口号找到对应的端口&#xff0c;再通过端口把数据传输给应用程序&#xff0c;这里要注意&#xff0c;数据不能随便发送&#xff0c;在发送之…

RocketMQ从入门到精通

1.MQ概述 1.1 RocketMQ简介 RocketMQ 是阿里开源的分布式消息中间件&#xff0c;跟其它中间件相比&#xff0c;RocketMQ 的特点是纯JAVA实现&#xff0c;是一套提供了消息生产&#xff0c;存储&#xff0c;消费全过程API的软件系统。 1.2 MQ用途 限流削峰 MQ可以将系统的超量请…

stack刷题

最小栈 最小栈 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部…