文件系统数据

在.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.mzph.cn/news/95787.shtml

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

相关文章

【亲测有效】C盘容量满了,给C盘扩容!!!

前言 相信有很多小伙伴用自己电脑的时候明明不往C盘装东西,但是C盘还是慢慢的变红了,我也是因为C盘满了而备受困扰。又不知道如何解决或者怕自己鼓捣着磁盘数据没了。闲来无事,我查了一些资料,终于将我的C盘容量扩充了且数据保存…

Hive 【Hive(七)窗口函数练习】

窗口函数案例 数据准备 1)建表语句 create table order_info (order_id string, --订单iduser_id string, -- 用户iduser_name string, -- 用户姓名order_date string, -- 下单日期order_amount int -- 订单金额 ); 2)装载语句 i…

一文搞懂APT攻击

APT攻击 1. 基本概念2. APT的攻击阶段3. APT的典型案例参考 1. 基本概念 高级持续性威胁(APT,Advanced Persistent Threat),又叫高级长期威胁,是一种复杂的、持续的网络攻击,包含高级、长期、威胁三个要素…

超声波气象站——环境监测领域强大助手

超声波气象站是环境监测领域的一位强大助手,超声波气象站是一种综合型的气象设备,精巧而全面,满足人们对环境状况的深入了解和精准把握。 首先,超声波气象站的传感器部分,是它的核心组成部分,这位“感知者”…

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 大模型…

Elasticsearch数据操作原理

Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎,设计用于云计算环境中,能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性,可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个…

Linux 本地 Docker Registry本地镜像仓库远程连接

Linux 本地 Docker Registry本地镜像仓库远程连接 Docker Registry 本地镜像仓库,简单几步结合cpolar内网穿透工具实现远程pull or push (拉取和推送)镜像,不受本地局域网限制! 1. 部署Docker Registry 使用官网安装方式,docker命令一键启动,该命令启动一个regis…

JVM-满老师

JVM 前言程序计数器,栈,虚拟机栈:本地方法栈:堆,方法区:堆内存溢出方法区运行时常量池 垃圾回收垃圾回收算法分代回收 前言 JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件&#xff…

虫情测报灯如何实现自动化测报?

一、KH-CQPest虫情测报灯的工作过程 虫情测报灯是新一代的图像式虫情测报智能设备,在农业虫害防治领域拥有独特魅力,它内置高像素的摄像头,能够精准记录并将照片上传至智慧农业平台识别害虫的形态、种类。虫情测报灯运用现代光电数控集成技术…

【案例】从kaggle的房价预测模型案例中了解深度学习模型,即如何学习深度学习模型

1、背景 深度学习是什么,为了解决什么样的问题 深度学习是一种机器学习的方法,它的主要目的是从数据中自动学习到有效的特征表示。深度学习通过多层的特征转换,把原始数据变成更高层次、更抽象的表示。这些学习到的表示可以替代人工设计的…

领域驱动设计

今天我们来聊聊领域驱动设计(Domain Driven Design,即 DDD)。 说起业务建模,领域驱动设计是一个绕不过去的话题。自从 Eric Evans 在2000后发布他的名著“Domain Driven Design:Tackling the Complexity in the Heart …

Netty(四)NIO-优化与源码

Netty优化与源码 1. 优化 1.1 扩展序列化算法 序列化,反序列化主要用于消息正文的转换。 序列化:将java对象转为要传输对象(byte[]或json,最终都是byte[]) 反序列化:将正文还原成java对象。 //java自带的序列化 // 反序列化 b…

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

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

[unity]保存文件的路径设置

序 比如,序列化了一个数组,保存到磁盘上。 原来的路径是"D://test.bin",能跑,但是有点问题:序列化出来的文件和原项目离的太远,不好管理。 要是能保存到unity工程的文件夹里就好了。这个路径该…

学习记忆——方法篇——整除特点

理解记忆法 对于数的整除特征大家都比较熟悉:比如4看后两位(因为100是4的倍数),8看后三位(因为1000是8的倍数),5末尾是0或5,3与9看各位数字和等等,今天重点研究一下3,9,…

毕设-原创医疗预约挂号平台分享

医疗预约挂号平台 不是尚医通项目,先看项目质量(有源码论文) 项目链接:医疗预约挂号平台git地址 演示视频:医疗预约挂号平台 功能结构图 登录注册模块:该模块具体分为登录和注册两个功能,这些…

小样本学习——匹配网络

目录 匹配网络 (1)简单介绍: (2)专业术语 (3)主要思想 (4)训练过程 问题 回答 MANN 匹配网络 (1)简单介绍: Matching netwo…

647. 回文子串

题目描述 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成&#xff0c…

css 实现相关案例

css 实现相关案例 抽屉案例(带吸附箭头) <template><div class"container"><div class"main-box"><div class"left-box">左边盒子</div><!--下面两种方式皆可实现展示和隐藏 --><div :style"{ f…

SpringBoot 如何进行参数校验?

在Spring Boot中进行参数校验通常是使用JSR 303规范&#xff08;也称为Bean Validation&#xff09;的注解和Spring的Validation API来完成的。以下是一些常见的步骤和示例&#xff0c;用于在Spring Boot应用程序中进行参数校验&#xff1a; 添加依赖&#xff1a; 首先&#xf…