C#文件操作(一)

news/2024/7/5 2:16:41

一、前言

        学习心得: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://lihuaxi.xjx100.cn/news/1905573.html

相关文章

CTF-PWN-堆-【use after free-2】

文章目录 fheap libc 2.23 64位检查maincreatedelete 思路覆盖目标函数的指针printf内部调用覆盖的函数前调用 printf时的栈实际去的函数的地方查找当前版本对应的libc_start_main和system计算出system的libc基地址exp fheap libc 2.23 64位 检查 main 多层while&#xff0c;…

《PySpark大数据分析实战》-16.云服务模式Databricks介绍运行案例

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

JS 实现带手柄自由调整页面大小的功能

当你想实现点击并拖动某个dic元素来调整其大小的时候&#xff0c;我们可以通过如下代码(可直接复制粘贴运行)实现效果&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&qu…

基于Java版本与鸿鹄企业电子招投标系统的二次开发实践-鸿鹄企业电子招投标系统源代码+支持二开+鸿鹄电子招投标系统

随着市场竞争的加剧和企业规模的扩大&#xff0c;招采管理逐渐成为企业核心竞争力的重要组成部分。为了提高招采工作的效率和质量&#xff0c;我们提出了一种基于电子化平台的解决方案。该方案旨在通过电子化招投标&#xff0c;使得招标采购的质量更高、速度更快&#xff0c;同…

SLAM算法与工程实践——RTKLIB编译

SLAM算法与工程实践系列文章 下面是SLAM算法与工程实践系列文章的总链接&#xff0c;本人发表这个系列的文章链接均收录于此 SLAM算法与工程实践系列文章链接 下面是专栏地址&#xff1a; SLAM算法与工程实践系列专栏 文章目录 SLAM算法与工程实践系列文章SLAM算法与工程实践…

状态管理@State

目录 一、简单类型的更新 二、class对象类型的变量 被该装饰器修饰的变量&#xff0c;在数据变化时会触发UI的刷新&#xff0c;也就是ArkTS UI中触发build()函数的调用&#xff0c;重新根据状态构建UI。如下更新是可以观察到的&#xff1a; 1、string number boolean 类型的数…

视觉增强RTK论文(1)—— GNSS-Stereo-Inertial SLAM for Arable Farming

文章目录 摘要方法标记ORB-SLAM3GNSS-Stereo-Inertial融合实验结果代码摘要 农业任务自动化速度的加快要求现场机器人采用高精度和鲁棒的定位系统。同时定位和映射(SLAM)方法不可避免地会在探索性轨迹上积累漂移,并且主要依赖于位置重新访问和循环闭合来保持一个有界的全局…

Flink Table API 与 SQL 编程整理

Flink API总共分为4层这里主要整理Table API的使用 Table API是流处理和批处理通用的关系型API&#xff0c;Table API可以基于流输入或者批输入来运行而不需要进行任何修改。Table API是SQL语言的超集并专门为Apache Flink设计的&#xff0c;Table API是Scala和Java语言集成式…