文件系统数据

在.NET Framework中进行的所有输入和输出工作都要用到流(stream)。流是序列化设备的抽象表示。序列化设备可以线性方式存储数据,并按照同样的方式访问:一次访问一个字节。

此设备可以是磁盘文件、网络通道、内存位置或其他支持一线性方式读写的对象。把设备变成抽象的,就可以隐藏流的底层目标和源。

有两种类型的流:

  • 输出流: 当向某些外部目标写入数据时,就要用到输出流。这可以是物理磁盘文件、网络位置、打印机或另一个程序。
  • 输入流: 用于将数据读入程序可以访问的内存或变量中。到目前为止,我们使用的最常见的输入流形式是键盘。输入流可以来自任何源,在此主要关注读取磁盘文件。适用于读/写磁盘文件的概念也适用于大多数设备。

System.IO命名空间

System.IO命名空间包含允许在数据流和文件上进行同步和异步读取及写入的类型。这里需要注意文件和流的差异,文件是一些具有永久存储及特定顺序的字节组成的一个有序的、具有名称的集合。是提供一种向后备存储写入字节和从后备存储读取字节的方式。

System.IO命名空间中的一些类及说明:

说明
File静态实用类,提供许多静态方法,用于移动、复制和删除文件
Directory静态实用类,提供许多静态方法,用于移动、复制和删除目录
Path实用类,用于处理路径名称
FileInfo表示磁盘上的物理文件,该类包含处理此文件的方法。要完成对文件的读写工作,就必须创建Stream对象。
DirectoryInfo表示磁盘上的物理目录,该类包含处理此目录的方法。
FileSystemInfo用作FileInfo和DirectoryInfo的基类,可以使用多态性同时处理文件和目录。
FileStream表示可写或可读,或二者均可的文件。可以同步或异步地读写文件。
StreamReader从流中读取字符数据,可以使用FileStream作为基类创建。
StreamWriter向流写入字符数据,可以使用FileStream作为基类创建
FileSystemWatcher用于监控文件和目录,提供了这些文件和目录发生变化时应用程序可以捕获的事件。

File类和Directory类

File类和Directory类分别用来对文件和各种目录进行操作,这两个类可以被实例化,但不能被其它类继承。

File类和Directory类就好比一个工厂,文件和文件夹就好比工厂所制作的产品,而工厂和产品的关系主要表现在以下几个方面:工厂可以自行开发产品(文件和文件夹的创建),也可以对该产品进行批量生产(文件和文件夹的复制,将产品进行销售(文件和文件夹的移动)以及将有质量问题的产品进行回收消除(文件和文件夹删除)。

File类

File类支持对文件的基本操作,它包括用于创建、复制、删除、移动和打开文件的静态方法,并协助创建FileStream对象。

方法说明
Copy()将文件从源位置复制到目标位置
Create()在指定的路径上创建文件
Delete()删除文件
Open()返回指定路径上的FileStream对象
Move()将指定的文件移到新位置。可在新位置为文件指定不同名称
Exists()确定指定的文件是否存在
Replace使用其他文件的内容替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份

说明:

  • 由于File类中的所有方法都是静态的,所以如果只想执行一个操作,那么使用File类中方法的效率比使用相应的FileInfo类中的方法可能更高。
  • File类的静态方法对所有方法都执行安全检查,因此如果打算多次重用某个对象,可考虑改用FileInfo类中的相应方法,因为并不总是需要安全检查。

Directory类

Directory类公开了用于创建、移动、枚举、删除目录和子目录的静态方法。

方法说明
CreateDirectory()创建具有指定路径的目录
Delete()删除指定的目录及其中的所有文件
GetDirectories()返回表示指定目录下的目录名的string对象数组
EnumerateDirectories与GetDirectories()类似,但返回目录名的IEnumerable集合
GetFiles()返回在指定目录中的文件名的string对象数组
EnumerateFiles()与GetFiles()类似,但返回文件名的IEnumerable集合
GetFilesSystemEntries()返回指定目录中的文件和目录名的string对象数组
EnumerateFileSystemEntries()与GetFilesSystemEntries()类似,但返回文件和目录名的IEnumerable集合
Move()将指定目录移到新位置。可在新位置为文件夹指定一个新名称

FileInfo和DirectoryInfo类

使用FileInfo和DirectoryInfo类可以方便地对文件和文件夹进行操作

FileInfo

FileInfo类和File类之间许多方法调用都是相同的,但是FileInfo类没有静态方法,该类中的方法仅可以用于实例化的对象。File类是静态类,所以它的调用需要字符串参数为每一个方法调用规定文件的位置。因此如果要在对象上进行单一方法调用,则可以使用静态File类。

FileInfo对象表示磁盘或网络位置上的文件。提供文件路径,就可以创建一个FileInfo对象。

FileInfo fi = new FileInfo(@"F:\Log.txt");

FileInfo类的常用属性及说明:

属性说明
CreationTime获取或设置当前FileSystemInfo对象的创建时间
Directory获取父目录的实例
DirectoryName获取表示目录的完整路径的字符串
Exist获取指定文件是否存在的值
Extension获取表示文件扩展名部分的字符串
FullName获取目录或文件的完整目录
IsReadOnly获取或设置确定当前文件是否只读的值
LastAccessTime获取或设置上次访问当前文件或目录的时间
LastWriteTime获取或设置上次写入当前文件或目录的时间
length获取当前文件的大小
Name获取文件名
private void button1_Click(object sender, EventArgs e)
{if(textBox1.Text == string.Empty)//判断输入的文件名称是否为空{MessageBox.Show("文件名称不能为空!");}else{FileInfo finfo = new FileInfo(textBox1.Text);//实例化FileInfo类对象if(finfo.Exists)//使用FileInfo对象的Exists属性判断要创建的文件是否存在{MessageBox.Show("该文件已经存在");}else{finfo.Create();		//使用FileInfo对象的Create方法创建文件}}
}

DirectoryInfo

DirectoryInfo类的作用类似于FileInfo类。它是一个实例化的对象,表示计算机上的单一目录。

  • 如果执行单一调用,就使用静态Directory类。
  • 如果执行一系列调用,则使用实例化的DirectoryInfo对象。

DirectoryInfo类的大多数属性继承自FileSystemInfo,与FileInfo类一样,但这些属性作用于目录上,而不是文件上。还有两个DirectoryInfo专用属性。

属性说明
parent检索一个DirectoryInfo对象,表示包含当前目录的目录。这个属性是只读的
Root检索一个DirectoryInfo对象,表示包含当前目录的跟目录。这个属性是只读的。

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

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

相关文章

PHP 行事准则:allow_url_fopen 与 allow_url_include

文章目录 参考环境allow_url_fopenallow_url_fopen 配置项操作远程文件file 协议 allow_url_includeallow_url_include 配置项 allow_url_include 与 allow_url_fopen区别联系默认配置配置项关闭所导致异常运行时配置ini_set()限制 参考 项目描述搜索引擎Bing、GoogleAI 大模型…

安全性算法

目录 一、安全性算法 二、基础术语 三、对称加密与非对称加密 四、数字签名 五、 哈希算法 六、哈希算法碰撞与溢出处理 一、安全性算法 安全性算法的必要性: 安全性算法的必要性是因为在现代数字化社会中,我们经常需要传输、存储和处理敏感的数据…

运营人必备这个微信运营工具

微信管理系统CRM在各行各业都有应用的场景---IT互联网、制造业、商业服务、金融投资、教育培训、房产家装、电商、政务等20行业领域均得到广泛应用。 微信CRM管理系统的主要功能: 多个微信号聚合聊天:解决多个微信来回切换,换着手着手机的麻烦…

【C++】位图

位图 1. 位图1.1 位图的概念1.1 位图的实现1.3 位图的应用 2. 布隆过滤器2.1 概念2.2 模拟实现2.3 优点和缺点2.4 应用场景2.5 哈希切分的应用 1. 位图 1.1 位图的概念 位图,就是用二进制位来表示数据的某种状态,例如判断数据是否存在,二进…

教你拥有一个自己的QQ机器人!0基础超详细保姆级教学!基于NoneBot2 Windows端搭建QQ机器人

0.序言 原文链接:教你本地化部署一个QQ机器人本教程主要面向Windows系统用户教程从0开始全程详细指导,0基础萌新请放心食用🍕如果你遇到了问题,请仔细检查是否哪一步有遗漏。如果你确定自己的操作没问题,可以到原文链…

信看课堂-厘米GNSS定位

我们常常说GPS 定位,不过定位远不止GPS定位,通过本节课程,我们将会了解到,原来GPS只是定位的一种: GNSS概述 不同的GNSS系统使用不同的频段来传输导航信号。以下是一些主要的GNSS系统及其相应的频段,用表…

苹果系统_安装matplotlib__pygame,以pycharm导入模块

为了更便捷、连贯的进行python编程学习,尽量在开始安装python软件时,将编辑器、模块一并安装好,这样能避免以后版本冲突的问题。小白在开始安装pycharm、pip、matplotlib往往会遇到一些问题,文中列示其中部分bug,供大家…

1200*C. Challenging Cliffs(模拟构造贪心)

Problem - 1537C - Codeforces Challenging Cliffs - 洛谷 解析: 排序数组,然后找出间隔最短的两个相邻的数 a,b,c,d,e,f (假设b,c为差最小的两个数)。 然后…

Python无废话-办公自动化Excel格式美化

设置字体 在使用openpyxl 处理excel 设置格式,需要导入Font类,设置Font初始化参数,常见参数如下: 关键字参数 数据类型 描述 name 字符串 字体名称,如Calibri或Times New Roman size 整型 大小点数 bold …

【一、灵犀考试系统项目设计、框架搭建】

一、创建数据库 1、打开power designer,新建数据库模型 2、新建数据表,以及关系 【注意】 图片的类型有两种:varbinary 和 image varbinary : 二进制字节流,可以自动控制长度 image : 最大可放2G图片 3、创建数据库&#…

创新家庭办公室:打造完美工作空间的秘诀

一个精心策划的家庭办公室有很多好处,何不把临时工作区升级改造为你的专属工作区呢,还能为这些至关重要的区域注入新的活力。 创造多用途的起居室:我们大多数人都不曾拥有一个可以完全根据工作需求设计的独立家庭办公室——所以有时候要找到…

QT:鼠标画线(双画布)

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPoint> //点 #include <QMouseEvent> //鼠标事件 #include <QPaintEvent> //绘图事件class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent 0);~Wi…

【算法训练-贪心算法 一】买卖股票的最佳时机II

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【贪心算法】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

docker系列6:docker安装redis

传送门 docker系列1&#xff1a;docker安装 docker系列2&#xff1a;阿里云镜像加速器 docker系列3&#xff1a;docker镜像基本命令 docker系列4&#xff1a;docker容器基本命令 docker系列5&#xff1a;docker安装nginx Docker安装redis 通过前面4节&#xff0c;对docke…

C#中的数组探究与学习

目录 C#中的数组一般分为:一.数组定义:为什么要使用数组?什么是数组?C#一维数组for和foreach的区别C#多维数组C#锯齿数组初始化的意义:适用场景:C#中的数组一般分为: ​①.一维数组。 ②.多维数组,也叫矩形数组。 ③.锯齿数组,也叫交错数组。 一.数组定义: 数组…

Halcon 从基础到精通-02- 开发基于HALCON的应用

HALCON的应用通过HDevelop应用来构建原型。HDevelop的开发主要有3种形式。 Start from Scratch: 手动通过脚本&#xff0c;把HDevelop的代码转化为一般的编程语言。如&#xff0c;上一节提到&#xff0c;其实&#xff0c;每个operators,也许并不一样&#xff0c;需要依据HALC…

云安全之等级保护解决方案及应用场景

等保2.0解决方案背景 适应云计算、移动互联网、大数据、物联网和工业控制等新技术发展&#xff0c;在新的技术场景能够顺利开展等级保护工作;《网络安全法》2016年已正式发布&#xff0c;等级保护2.0为了更好配合《网络安全法》的实施&#xff1b;等级保护1.0&#xff0c;在适…

(32)测距仪(声纳、激光雷达、深度摄影机)

文章目录 前言 32.1 单向测距仪 32.2 全向性近距离测距仪 32.3 基于视觉的传感器 前言 旋翼飞机/固定翼/无人车支持多种不同的测距仪&#xff0c;包括激光雷达&#xff08;使用激光或红外线光束进行距离测量&#xff09;、360 度激光雷达&#xff08;可探测多个方向的障碍…

SpringBoot自带模板引擎Thymeleaf使用详解①

目录 前言 一、SpringBoot静态资源相关目录 二、变量输出 2.1 在templates目录下创建视图index.html 2.2 创建对应的Controller 2.3 在视图展示model中的值 三、操作字符串和时间 3.1 操作字符串 3.2 操作时间 前言 Thymeleaf是一款用于渲染XML/HTML5内容的模板引擎&am…

【初识Linux】Linux环境配置、Linux的基本指令 一

Linux基本指令一 一、学习前提(环境配置&#xff09;①安装Xshell和云服务器推荐②Xshell用途如下图③打开Xshell 二、 Linux基本指令①whoami和who指令②pwd、ls、ls -l三个指令ls指令扩充 ③cd指令前提了解有了上面的认识&#xff0c;我们就可以开始cd指令的学习了 ④tree指令…