C#文件基本操作(判断文件是否存在、创建文件、复制或移动文件、删除文件以及获取文件基本信息)

目录

一、判断文件是否存在

1.File类的Exists()方法

2.FileInfo类的Exists属性

二、创建文件

1.File类的Create()方法

2.FileInfo类的Create()方法

三、复制或移动文件

1.File类的Copy()方法

2.File类的Move()方法

3.FileInfo类的CopyTo()方法

四、删除文件

1.File类的Delete()方法

2.FileInfo类的Delete()方法 

五、获取文件的基本信息


        对于文件的基本操作大体可以分为判断文件是否存在、创建文件、复制或移动文件、删除文件以及获取文件基本信息。

一、判断文件是否存在

        判断文件是否存在时,可以使用File类的Exists()方法或者FileInfo类的Exists属性来实现。

1.File类的Exists()方法

        Exists()方法用于判断指定的文件是否存在,语法如下。

public static bool Exists(string path) 
☑ path:要检查的文件。
☑ 返回值:如果调用方具有要求的权限并且path包含现有文件的名称,则为true;否则为false。如果path为空引用或零长度字符串,则此方法也返回false;如果调用方不具有读取指定文件所需的足够权限,则不引发异常并且该方法返回false,这与path是否存在无关。在用Exists()方法路径为空时,会触发异常。

2.FileInfo类的Exists属性

        获取指示文件是否存在的值,语法如下。

public override bool Exists{get;}
属性值:如果该文件存在,则为true;如果该文件不存在或该文件是目录,则为false。

二、创建文件

        创建文件可以使用File类的Create()方法或者FileInfo类的Create()方法来实现。

1.File类的Create()方法

         Create()方法为可重载方法,它有以下4种重载形式

public static FileStream Create (string path)
public static FileStream Create (string path,int bufferSize)
public static FileStream Create (string path,int bufferSize,FileOptions options)
public static FileStream Create (string path,int bufferSize,FileOptions options,FileSecurity fileSecurity)

        在用Create()方法创建目录时,如果路径为空,或文件夹为只读,则会触发异常。

        File类的Create()方法参数说明

参   数

说    明

path

 文件名

bufferSize

用于读取和写入文件的已放入缓冲区的字节数

option

FileOptions值之一,它描述如何创建或改写该文件

fileSecurity

FileSecurity值之一,它确定文件的访问控制和审核安全性

2.FileInfo类的Create()方法

语法如下:
public FileStream Create()
返回值:新文件,默认情况下,Create()方法将向所有用户授予对新文件的完全读写访问权限。

三、复制或移动文件

        复制或移动文件时,可以使用File类的Copy()方法、Move()方法或者FileInfo类的CopyTo()方法、 MoveTo()方法来实现。

1.File类的Copy()方法

        Copy()方法为可重载方法,它有以下两种重载形式。

public static void Copy(string sourceFileName,string destFileName)
public static void Copy(string sourceFileName,string destFileName,bool overwrite)
☑ sourceFileName:要复制的文件。
☑ destFileName:目标文件的名称,不能是目录。如果是第一种重载形式,则该参数不能是现有文件。
☑ overwrite:如果可以改写目标文件,则为true;否则为false。
//示例
File.Copy("C:NTest.txt","D:NTest.txt");

2.File类的Move()方法

        Move()方法用于将指定文件移到新位置,并提供指定新文件名的选项,语法如下。

public static void Move(string sourceFileName,string destFileName)
☑ sourceFileName:要移动的文件的名称。
☑ destFileName:文件的新路径。

        对文件进行移动时,如果目标文件已存在,则发生异常。

//示例
File.Move("C:NTest.txt","D:NTest.txt");

3.FileInfo类的CopyTo()方法

        CopyTo()方法为可重载方法,它有以下两种重载形式。

public Filelnfo CopyTo (string destFileName)
public Filelnfo CopyTo(string destFileName,bool overwrite)
☑ destFileName:要复制到的新文件的名称。 
☑ overwrite:若为true,则允许改写现有文件;否则为false。 
☑ 返回值:第一种重载形式的返回值为带有完全限定路径的新文件。第二种重载形式的返回值为新文件,或者如果overwrite为true,则为现有文件的改写。如果文件存在,且overwrite为false,则会发生IOException。
//将C盘根目录下的Test.txt文本文件移动到D盘根目录下
Filelnfo finfo =new Filelnfo("C:NTest.txt");
finfo.CopyTo("D:NTest.txt",true);
//法将C盘根目录下的Test.txt文本文件移动到D盘根目录下
Filelnfo finfo =new Filelnfo("C;NTest.txt");
finfo.MoveTo("D:NTest.txt");

四、删除文件

        删除文件可以使用File类的Delete()方法或者FileInfo类的Delete()方法来实现。

1.File类的Delete()方法

        Delete()方法是指删除指定的文件,语法如下。     

public static void Delete(string path)
path:要删除的文件的名称。
//调用File类的Delete()方法删除C盘根目录下的Test.txt文本文件
File.Delete("C:NTest.txt");

2.FileInfo类的Delete()方法 

        Delete()方法是指永久删除文件,语法如下。

public override void Delete()
//象调用FileInfo类的Delete()方法删除C盘根目录下的Test.txt文本文件
Filelnfo finfo =new Filelnfo("C:NTest.txt");
finfo.Delete();

五、获取文件的基本信息

        获取文件的基本信息时,主要用FileInfo类中的各种属性。

1.示例源码

        OpenFileDialog控件用来显示 打开 对话框, TextBox 控件用来显示选择的文件名, Button 控件用来打开 “浏览 并获取选择文件的基本信息。
// 获取文件的基本信息
namespace _05
{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(230, 23);}private void Button1_Click(object sender, EventArgs e){if (openFileDialog1.ShowDialog() == DialogResult.OK){textBox1.Text = openFileDialog1.FileName;FileInfo finfo = new(textBox1.Text);                               //实例化FileInfo对象string strCTime, strLATime, strLWTime, strName, strFName, strDName, strISRead;long lgLength;strCTime = finfo.CreationTime.ToShortDateString();     //获取文件创建时间strLATime = finfo.LastAccessTime.ToShortDateString();//获取上次访问该文件的时间strLWTime = finfo.LastWriteTime.ToShortDateString(); //获取上次写入文件的时间strName = finfo.Name;                                              //获取文件名称strFName = finfo.FullName;                                       //获取文件的完整目录strDName = finfo.DirectoryName ??string.Empty;        //获取文件的完整路径,??string.Empty解除CS8600strISRead = finfo.IsReadOnly.ToString();                     //获取文件是否只读lgLength = finfo.Length;                                            //获取文件长度MessageBox.Show("文件信息:\n创建时间:" + strCTime + " 上次访问时间:" + strLATime + "\n上次写入时间:" + strLWTime + " 文件名称:" + strName + "\n完整目录:" + strFName + "\n完整路径:" + strDName + "\n是否只读:" + strISRead + " 文件长度:" + lgLength);}}}
}

2.生成效果

 

 

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

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

相关文章

Linux:创建进程 -- fork,到底是什么?

相信大家在初学进程时,对fork函数创建进程一定会有很多的困惑,比如: 1.fork做了什么事情?? 2.为什么fork函数会有两个返回值?3.为什么fork的两个返回值,会给父进程谅回子进程pid,给子进程返回0?4.fork之后:父子进…

新手村之SQL——分组与子查询

1.GROUP BY GROUP BY 函数就是 SQL 中用来实现分组的函数,其用于结合聚合函数,能根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。 mysql> SELECT country, COUNT(country) AS teacher_count-> FROM teacher…

【古月居《ros入门21讲》学习笔记】10_话题消息的定义与使用

目录 说明: 1. 话题模型 2. 实现过程(C) 自定义话题消息 Person.msg文件内容 Person.msg文件内容说明 编译配置 在package.xml文件中添加功能包依赖 在CMakeLists.txt中添加编译选项 编译生成语言相关文件 创建发布者代码&#xff…

关于最近Facebook的未经用户同意收集使用个人信息,

最近收到深圳市通信管理局的违法违规APP处置通知大概如下: 并且详细列举了 facebook sdk 在未经用户允许前调用的 TelephonyManager.getNetworkOperatorName(); 方法,获取运营商名称. 解决方法, 首先 在用户没有点击允许隐私条款前 不要调用任何Facebook sdk 方法,比如: Fac…

智慧科研助力科研数据的分析处理

如今,科研领域的发展日新月异,数据量也越来越大。这时,智慧科研可视化技术不仅为科研人员提供了快速高效的数据分析手段,而且为科研工作的推进提供了新的思路和方法。通过可视化手段,我们可以将各种数据、信息、知识以…

助力企业实现更简单的数据库管理,ATOMDB 与 TDengine 完成兼容性互认

为加速数字化转型进程,当下越来越多的企业开始进行新一轮数据架构改造升级。在此过程中,全平台数据库管理客户端提供了一个集中管理和操作数据库的工具,提高了数据库管理的效率和便利性,减少了人工操作的复杂性和错误率&#xff0…

带大家做一个,易上手的家常土豆片

还是先从冰箱里那一块猪瘦肉 搞一点蒜和生姜 切成小块 装进一个碗里 这里一点就够了 一条绿皮辣椒 切片 三个左右干辣椒 随便切两刀 让它小一点就好了 一起装一个碗 一大一小两个土豆切片 猪肉切片 起锅烧油 然后 下肉翻炒 等肉变颜色捞出来 然后放入土豆 和小半碗水 让…

【漏洞复现】万户协同办公平台ezoffice SendFileCheckTemplateEdit.jsp接口存在SQL注入漏洞 附POC

漏洞描述 万户ezOFFICE协同管理平台是一个综合信息基础应用平台。 万户协同办公平台ezoffice SendFileCheckTemplateEdit.jsp接口存在SQL注入漏洞。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害…

HTML-标签之文字排版、图片、链接、音视频

1、标签语法 HTML超文本标记语言——HyperText Markup Language 超文本是链接标记也叫标签,带尖括号的文本 2、HTML基本骨架 HTML基本骨架是网页模板 html:整个网页head:网页头部,存放给浏览器看的代码,例如CSSbody…

抖音本地生活服务商申请入口门槛过高,该怎么办?

近年来,短视频平台的举起让直播带货和本地生活服务行业逐渐兴起,并且以其便捷、高效的特点受到了广大用户的欢迎。很多创业者也加入了本地生活服务商的行列中,但有消息传出,抖音本地生活服务商申请入口可能会关闭,由于…

从0到字节跳动30W年薪,我在测试行业“混”的第5个年头····

一些碎碎念 什么都做了,和什么都没做其实是一样的,走出“瞎忙活”的安乐窝,才是避开弯路的最佳路径。希望我的经历能帮助到有需要的朋友。 在测试行业已经混了5个年头了,以前经常听到开发对我说,天天的点点点有意思没…

Linux系统部署Tale个人博客并发布到公网访问

文章目录 前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale 前言 今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale,Tale…

博捷芯:半导体芯片切割,一道精细工艺的科技之门

在半导体制造的过程中,芯片切割是一道重要的环节,它不仅决定了芯片的尺寸和形状,还直接影响到芯片的性能和使用效果。随着科技的不断进步,芯片切割技术也在不断发展,成为半导体制造领域中一道精细工艺的科技之门。 芯片…

【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析

文章目录 行为型模式1、模板方法模式(1)概述(2)结构(3)案例实现(4)优缺点(5)适用场景(6)JDK源码解析(7)模板方…

制造业如何做生产设备管理、分析生产数据?

本文将为大家讲解:1、设备管理的现状与问题;2、设备管理系统功能;3、制造业企业如何做生产设备管理、分析生产数据?4、制造业设备管理的价值。 想要管理好设备,设备档案管理、巡检、报修、保养、分析预警等问题都是必须…

封装进度条onUploadProgress+axios取消请求的上传组件

目录 定时模拟进度条 方法 A.axios B.xhr 取消请求 完整代码 A.自定义上传组件 B.二次封装组件 情况 增加cancelToken不生效,刷新页面 进度条太快->设置浏览器网速 定时模拟进度条 startUpload() {if (!this.file) return;const totalSize this.fil…

NV040C语音芯片:让自助ATM机使用更加安全快捷

近年来,移动支付方式的兴起、银行加强线上化服务、数字人民币项目推进等因素的影响,人们使用ATM机的频率呈现小幅度的下降趋势。然而,自助ATM机并未从我们的视野中消失,它们仍然在金融领域发挥着重要的作用。未来,ATM机…

Wish防关联是什么?Wish要怎样避免违规封店?

四大跨境电商平台之一wish,做跨境电商的很多人可能都听过wish。随着wish不断完善平台制度,对于多账号运营的卖家要求越来越严厉,wish和亚马逊、eBay等其它跨境电商平台一样,不支持一个卖家开设多个账号多家店铺。 但是对于各位卖家…

【力扣:526】优美的排列

状态压缩动态规划 原理如下: 遍历位图可以得到所有组合序列,将这些序列的每一位看作一个数,取序列中1总量的值作为每轮遍历的位,此时对每个这样的位都能和所有数进行匹配,因为一开始就取的是全排列,并且我们…

[Java] 阿里一面~说一下ArrayList 与 LinkedList 区别

文章目录 是否保证线程安全底层数据结构插入和删除是否受元素位置的影响是否支持快速随机访问内存空间占用: 是否保证线程安全 ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全; 底层数据结构 ● ArrayList 底层使用的是 Obje…