C#文件操作File类vsFileInfo类和Directory类vsDirectoryInfo类

news2024/11/30 20:31:34

目录

一、File类vsFileInfo类

1.File类

(1)示例源码

(2)生成效果

2.FileInfo类

(1)示例源码

(2)生成效果

二、 Directory类vsDirectoryInfo类

1.Directory类

(1)示例源码

(2)生成效果

2.DirectoryInfo类

(1)示例源码

(2)生成效果


        System.IO命名空间包含允许在数据流和文件中进行同步和异步读取及写入的类型。

        文件和流的差异:文件是一些具有永久存储及特定顺序的字节组成的一个有序的、具有名称的集合提供一种向后备存储写入字节从后备存储读取字节的方式

        System.IO命名空间中的类及说明如表:

说    明

BinaryReader

用特定的编码将基元数据类型读作二进制值

Binary Writer

以二进制形式将基元类型写入流,并支持用特定的编码写入字符串

BufferedStream

给另一流上的读写操作添加一个缓冲层。无法继承此类

Directory

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

DirectoryInfo

公开用于创建、移动和枚举目录和子目录的实例方法。无法继承此类

DriveInfo

提供对有关驱动器的信息的访问

File

提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建FileStream对象

FileInfo

提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建FileStream对象。无法继
承此类

FileStream

公开以文件为主的Stream,既支持同步读写操作,也支持异步读写操作

FileSystemInfo

为FileInfo和DirectoryInfo对象提供基类

FileSystemWatcher

侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件

MemoryStream

创建其支持存储区为内存的流

Path

对包含文件或目录路径信息的String实例执行操作。这些操作是以跨平台的方式执行的

StreamReader

实现一个TextReader,使其以一种特定的编码从字节流中读取字符

StreamWriter

实现一个TextWriter,使其以一种特定的编码向流中写入字符

StringReader

实现从字符串进行读取的TextReader

StringWriter

实现一个用于将信息写入字符串的TextWriter。该信息存储在基础StringBuilder中

TextReader

表示可读取连续字符系列的读取器

TextWriter

表示可以编写一个有序字符系列的编写器。该类为抽象类

一、File类vsFileInfo类

1.File类

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

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

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

        虽然,使用与文件、文件夹及流相关的类时,首先需要添加System.IO命名空间。但.NET 7.0、 .NET 8.0下不需要添加,因为已经被默认支持了。

 方   法说   明
Copy将现有文件复制到新文件
Create在指定路径中创建文件
Delete删除指定的文件。如果指定的文件不存在,则不引发异常
Exists确定指定的文件是否存在
Move将指定文件移到新位置,并提供指定新文件名的选项
Open打开指定路径上的FileStream
CreateText创建或打开一个文件用于写入UTF-8编码的文本
GetCreationTime返回指定文件或目录的创建日期和时间
GetLastAccessTime返回上次访问指定文件或目录的日期和时间
GetLastWriteTime返回上次写入指定文件或目录的日期和时间
OpenRead打开现有文件以进行读取
OpenText打开现有UTF-8编码文本文件以进行读取
OpenWrite打开现有文件以进行写入
ReadAllBytes打开一个文件,将文件的内容读入一个字符串,然后关闭该文件
RcadAllLines打开一个文本文件,将文件的所有行都读入一个字符串数组,然后关闭该文件
ReadAllText打开一个文本文件,将文件的所有行读入一个字符串,然后关闭该文件
Replace使用其他文件的内容替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的
备份
SetCreationTime设置创建该文件的日期和时间
SetLastAccessTime设置上次访问指定文件的日期和时间
SetLastWriteTime设置上次写入指定文件的日期和时间
WriteAllBytes创建一个新文件,在其中写入指定的字节数组,然后关闭该文件。如果目标文件已存在,则改
写该文件
WriteAllLines创建一个新文件,在其中写入指定的字符串,然后关闭文件。如果目标文件已存在,则改写该
文件
WriteAllText创建一个新文件,在文件中写入内容,然后关闭文件。如果目标文件已存在,则改写该文件

(1)示例源码

// File
namespace _01
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = "文件名:";
            button1.Text = "创建";
            label1.AutoSize = true;
            textBox1.Size = new Size(150, 23);
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == string.Empty)   //判断输入的文件名是否为空
            {
                MessageBox.Show("文件名不能为空!");
            }
            else
            {
                if (File.Exists(textBox1.Text))       //使用File类的Exists方法判断要创建的文件是否存在
                {
                    MessageBox.Show("该文件已经存在");
                }
                else
                {
                    File.Create(textBox1.Text);   //使用File类的Create方法创建文件
                }
            }
        }
    }
}

(2)生成效果

         文件位置:F:\C#_TM\chapter20\01\bin\Debug\net8.0-windows\wenchm.txt

        如果还未生成过,第一次按下按钮则生成文件,再次按下按钮则警示。

 

2.FileInfo类

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

        FileInfo类和File类之间许多方法调用都是相同的,但是FileInfo类没有静态方法,该类中的方法仅可以用于实例化的对象。File类是静态类,所以它的调用需要字符串参数为每一个方法调用规定文件位置。因此如果要在对象上进行单一方法调用,则可以使用静态File类,在这种情况下静态调用速度要快一些,因为.NET框架不必执行实例化新对象并调用其方法的过程。如果要在文件上执行几种操作,则实例化FileInfo对象使用其方法就更好一些。这样会提高效率,因为对象将在文件系统上引用正确的文件,而静态类就必须每次都寻找文件。

        如果想要对某个对象进行重复操作,应使用FileInfo类。

属    性
CreationTime    获取或设置当前 FileSystemInfo 对象的创建时间
Directory    获取父目录的实例
DirectoryName    获取表示目录的完整路径的字符串
    Exist    获取指示文件是否存在的值
Extension    获取表示文件扩展名部分的字符串
FullName    获取目录或文件的完整目录
IsReadOnly    获取或设置确定当前文件是否为只读的值
LastAccessTime    获取或设置上次访问当前文件或目录的时间
LastWriteTime    获取或设置上次写入当前文件或目录的时间
Length    获取当前文件的大小
   Name    获取文件名

(1)示例源码

// FileInfo
namespace _03
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = "文件路径及名称:";
            button1.Text = "创建";
            label1.AutoSize = true;
            textBox1.Size = new Size(190, 23);
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == string.Empty)  //判断输入的文件名称是否为空
            {
                MessageBox.Show("文件名称不能为空!");
            }
            else
            {
                FileInfo finfo = new(textBox1.Text);
                if (finfo.Exists)                        //使用FileInfo对象的Exists属性判断要创建的文件是否存在
                {
                    MessageBox.Show("该文件已经存在");
                }
                else
                {
                    finfo.Create();                 //使用FileInfo对象的Create方法创建文件
                }
            }
        }   
    }
}

(2)生成效果

        文件及路径:F:\C#_TM\chapter20\03\bin\Debug\net8.0-windows\wenchm.txt

         如果还未生成过,第一次按下按钮则生成文件,再次按下按钮则警示。

二、 Directory类vsDirectoryInfo类

1.Directory类

        Directory类公开了用于创建、移动、枚举、删除目录和子目录的静态方法。在用Directory类对文件夹进行操作时,其文件夹的路径必须正确,否则会触发异常。

方   法说   明
 CreateDirectory 创建指定路径中的所有目录
 Delete 删除指定的目录
 Exists 确定给定路径是否引用磁盘上的现有目录
 GetCreationTime 获取目录的创建日期和时间
 GetDirectories 获取指定目录中子目录的名称
 GetDirectoryRoo 返回指定路径的卷信息、根信息或二者同时返回
 GetFiles 返回指定目录中的文件的名称
 GetFileSystemEntries 返回指定目录中所有文件和子目录的名称
 GetLastAccessTime 返回上次访问指定文件或目录的日期和时间
 GetLastWriteTime 返回上次写入指定文件或目录的日期和时间
 GetParent 检索指定路径的父目录,包括绝对路径和相对路径
 Move 将文件或目录及其内容移到新位置
 SetCreationTime 为指定的文件或目录设置创建日期和时间
 SetCurrentDirectory 将应用程序的当前工作目录设置为指定的目录
 SetLastAccessTime 设置上次访问指定文件或目录的日期和时间
 SetLastWriteTime 设置上次写入目录的日期和时间

(1)示例源码

// Directory
namespace _02
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = "文件夹路径及名称:";
            button1.Text = "创建";
            label1.AutoSize = true;
            textBox1.Size = new Size(210, 23);
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == string.Empty)                 //判断输入的文件夹名称是否为空
            {
                MessageBox.Show("文件夹名称不能为空!");
            }
            else
            {
                if (Directory.Exists(textBox1.Text))           //使用Directory类的Exists方法判断要创建的文件夹是否存在
                {
                    MessageBox.Show("该文件夹已经存在");
                }
                else
                {
                    Directory.CreateDirectory(textBox1.Text);  //使用Directory类的CreateDirectory方法创建文件夹
                }
            }
        }
    }
}

(2)生成效果

         路径:F:\C#_TM\chapter20\02\bin\Debug\net8.0-windows

        如果还未生成过,第一次按下按钮则生成文件,再次按下按钮则警示。

 

2.DirectoryInfo类

        DirectoryInfo类和Directory类之间的关系与FileInfo类和File类之间的关系十分类似。

属   性说   明
CreationTime    获取或设置当前FileSystemlnfo对象的创建时间
Exists    获取指示目录是否存在的值
Extension    获取表示文件扩展名部分的字符串
FullName    获取目录或文件的完整目录
LastAccessTime     获取或设置上次访问当前文件或目录的时间
LastWriteTime     获取或设置上次写入当前文件或目录的时间
    Name    获取Directorylnfo实例的名称
    Parent    获取指定子目录的父目录
    Root    获取路径的根部分

(1)示例源码

// DirectoryInfo
namespace _04
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = "文件夹路径及名称:";
            button1.Text = "创建";
            label1.AutoSize = true;
            textBox1.Size = new Size(210, 23);
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == string.Empty)   //判断输入的文件夹名称是否为空
            {
                MessageBox.Show("文件夹名称不能为空!");
            }
            else
            {
                DirectoryInfo dinfo = new(textBox1.Text);  //实例化DirectoryInfo类对象
                if (dinfo.Exists)                //使用DirectoryInfo对象的Exists属性判断要创建的文件夹是否存在
                {
                    MessageBox.Show("该文件夹已经存在");
                }
                else
                {
                    dinfo.Create();             //使用DirectoryInfo对象的Create方法创建文件夹
                }
            }
        }
    }
}

(2)生成效果

        路径: F:\C#_TM\chapter20\04\bin\Debug\net8.0-windows

        如果还未生成过,第一次按下按钮则生成文件,再次按下按钮则警示。

 

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

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

相关文章

怎么在哔哩哔哩上引流?分享五个b站引流推广必备的几个方法

大家好,我是 小刘今天为大家分享的是抖音引流知识分享,今天咱们聊一些干货知识,绝对会让你们有一个重新的认知。哔哩的流量大,是毋庸置疑的,哔哩也是最早一批短视频平台。哔哩于2017年上线,一开始主要是通过…

基于SSM的企业订单跟踪管理系统(有报告)。Javaee项目

演示视频: 基于SSM的企业订单跟踪管理系统(有报告)。Javaee项目 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringM…

Kotlin学习——kt入门合集博客 kt里的委派模式Delegation kt里的特性

Kotlin 是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作,并提供了多种方式在多个平台间复用代码,以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…

2023年【N1叉车司机】新版试题及N1叉车司机作业考试题库

题库来源:安全生产模拟考试一点通公众号小程序 N1叉车司机新版试题参考答案及N1叉车司机考试试题解析是安全生产模拟考试一点通题库老师及N1叉车司机操作证已考过的学员汇总,相对有效帮助N1叉车司机作业考试题库学员顺利通过考试。 1、【多选题】《中华…

基于U-Net的视网膜血管分割(Pytorch完整版)

基于 U-Net 的视网膜血管分割是一种应用深度学习的方法,特别是 U-Net 结构,用于从眼底图像中分割出视网膜血管。U-Net 是一种全卷积神经网络(FCN),通常用于图像分割任务。以下是基于 U-Net 的视网膜血管分割的内容&…

公司注册资金认缴的好处有哪些

公司注册资金认缴的好处 1、减少投资项目审批,最大限度地缩小审批、核准、备案范围,切实落实企业和个人投资自主权。对确需审批、核准、备案的项目,要简化程序、限时办结。同时,为避免重复投资和无序竞争,强调要加强土…

LCR 047. 二叉树剪枝 和 leetCode 1110. 删点成林 + 递归 + 图解

给定一个二叉树 根节点 root ,树的每个节点的值要么是 0,要么是 1。请剪除该二叉树中所有节点的值为 0 的子树。节点 node 的子树为 node 本身,以及所有 node 的后代。 示例 1: 输入: [1,null,0,0,1] 输出: [1,null,0,null,1] 解释: 只有…

代码常见问题

1. 前端页面出现404了: 1)那说明你该页面里面有某个接口地址(url)写错了,后台没有这个接口 2)你后台写了这个接口,但是后台忘了重启服务了,这样的话前端也映射不上的 所以404的时…

安卓吸顶效果

当列表滑动时&#xff0c;图片逐渐消失&#xff0c;toolBar悬停在头部。 <?xml version"1.0" encoding"utf-8"?><androidx.coordinatorlayout.widget.CoordinatorLayoutxmlns:android"http://schemas.android.com/apk/res/android"x…

python--获取每张切片的不同PEF区间值的百分比

在全直径数字岩心中&#xff0c;如何获取每张切片的不同PEF区间值的百分比&#xff1f; import os import datetime from PIL import Image import numpy as np import csv import easygui as gclass Table(object):def __init__(self, table_data_path):self.table_data_path…

三菱GX WORRKS3 下载与安装

目录 下载 安装 准备好安装包 对电脑系统要求 安装 因为小编公司需要&#xff0c;所以开始了三菱plc软件的学习&#xff0c;并从今天开始记录学习&#xff0c;希望小编的内容能帮到你&#xff0c;对你的学习有帮助&#xff01; 下载 三菱电机官网 当然了&#xff0c;需要…

2023-11-26 事业-代号s-跨境物流-记录

摘要: 2023-11-26 事业-代号s-跨境物流-记录 跨境物流: 【结论】 中小卖家&#xff08;最低适合1个人经营的卖家&#xff09;首选以下两种物流&#xff0c;目前已知的是以下两种&#xff0c;后续有新的发现再更新。 1、云途物流&#xff08;YunExpress&#xff09;&#xff…

箱型图 Box Plot 数据分析的法宝

文章目录 一、箱形图的介绍二、六大因数三、Box plot的应用四、箱形图的优劣势五、图形拓展 一、箱形图的介绍 箱形图又称为盒须图、盒式图、盒状图或箱线图&#xff0c;是一种用作显示一组数据分散情况资料的统计图。因型状如箱子而得名。在各种领域也经常被使用&#xff0c;…

一、Lua基础

文章目录 一、Lua是什么二、Lua特性&#xff08;一&#xff09;轻量级&#xff08;二&#xff09;可扩展&#xff08;三&#xff09;其它特性 三、Lua安装四、Lua应用 看到评论说&#xff0c;C让我见识了语言的严谨与缜密&#xff0c;lua让我见识到了语言的精巧与创新&#xff…

基于51单片机交通灯夜间模式+紧急模式_易懂版_(仿真+代码_报告_讲解)

J029 51单片机交通灯_易懂版__夜间紧急(仿真代码_报告_讲解&#xff09; 51单片机交通灯_易懂版_ 1 **讲解视频&#xff1a;**2 **功能要求**3 **仿真图&#xff1a;**4 **程序设计&#xff1a;**5 **设计报告**6 **资料清单&&下载链接&#xff1a;****资料下载链接&am…

佳易王商超便利店进销存管理系统软件下载,扫描商品自动计算金额支持扫码支付

佳易王商超便利店进销存管理系统软件下载&#xff0c;扫描商品自动计算金额支持扫码支付 软件特色&#xff1a; 1、功能实用&#xff0c;操作简单&#xff0c;不会电脑也会操作&#xff0c;软件免安装&#xff0c;已内置数据库。软件在关闭的时候&#xff0c;可以设置会员数据…

Windows安装mysql8.0

官网地址&#xff1a;MySQL :: MySQL Community Downloads 选择相应版本信息下载 默认选择点击下一步 默认配置点击next 设置密码 默认配置

多模态大模型总结1(2021和2022年)

常用损失函数 ITC &#xff08;image-text contrasctive loss&#xff09; CLIP中采用的对比损失&#xff0c;最大化配对文本对的余弦相似度&#xff0c;最小化非配对文本对的余弦相似度&#xff0c;采用交叉熵损失实现 MLM &#xff08;masked language modeling&#xff0…

【Linux】23、内存超详细介绍

文章目录 零、资料一、内存映射1.1 TLB1.2 多级页表1.3 大页 二、虚拟内存空间分布2.1 用户空间的段2.2 内存分配和回收2.2.1 小对象2.2.2 释放 三、查看内存使用情况3.1 Buffer 和 Cache3.1.1 proc 文件系统3.1.2 案例3.1.2.1 场景 1&#xff1a;磁盘和文件写案例3.1.2.2 场景…

【STM32单片机】自动售货机控制系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器&#xff0c;使用OLED显示模块、矩阵按键模块、LED和蜂鸣器、继电器模块等。 主要功能&#xff1a; 系统运行后&#xff0c;OLED显示系统初始界面&#xff0c;可通过…