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

news2024/11/27 16:29:23

目录

一、判断文件是否存在

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解除CS8600
                strISRead = finfo.IsReadOnly.ToString();                     //获取文件是否只读
                lgLength = finfo.Length;                                            //获取文件长度
                MessageBox.Show("文件信息:\n创建时间:" + strCTime + " 上次访问时间:" + strLATime + "\n上次写入时间:" + strLWTime + " 文件名称:" + strName + "\n完整目录:" + strFName + "\n完整路径:" + strDName + "\n是否只读:" + strISRead + " 文件长度:" + lgLength);
            }
        }
    }
}

2.生成效果

 

 

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

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

相关文章

大数据数据仓库,Sqoop--学习笔记

数据仓库介绍 1. 数据仓库概念 数据仓库概念创始人在《建立数据仓库》一书中对数据仓库的定义是:数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、数据集成的(Integrated)、相对…

【AUTOSAR】【通信栈】ComXf

AUTOSAR专栏——总目录_嵌入式知行合一的博客-CSDN博客文章浏览阅读292次。本文主要汇总该专栏文章,以方便各位读者阅读。https://xianfan.blog.csdn.net/article/details/132072415 目录 一、概述 二、限制说明

NX二次开发UF_CURVE_ask_curve_turn_angle 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_curve_turn_angle Defined in: uf_curve.h int UF_CURVE_ask_curve_turn_angle(tag_t curve, double orientation [ 3 ] , double * angle ) overview 概述 Returns …

Python大数据考题

Python大数据考题: 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要…

Typescript基础面试题 | 01.精选 ts 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

Python 潮流周刊#28:两种线程池、四种优化程序的方法

△请给“Python猫”加星标 ,以免错过文章推送 你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。本周刊开源,欢迎投稿[1]。另有电报频道[2]作为副刊,补充发布更加丰富的资讯。 &#x1f43…

Typescript基础面试题 | 03.精选 ts 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

C# WPF上位机开发(开篇)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 之前很少用到c#语言,大部分时间都用c/c,主要是它可以兼顾上位机qt开发以及嵌入式开发。所以,用c/c是比较合理的…

新手如何买卖股票,股票投资基础入门

一、教程描述 本套股票教程,大小3.89G,共有13个文件。 二、教程目录 第01课【极速入门】股市全景.mp4 第02课【极速入门】入门实操.mp4 第03课【价值分析】白马选股.mp4 第04课【价值分析】行业选股.mp4 第05课【价值分析】量化选股.mp4 第06课【…

vue3+ts 依赖注入 provide inject

父级&#xff1a; <template><div><h1>App.vue (爷爷级别)</h1><label><input type"radio" v-model"colorVal" value"red" name"color" />红色</label><label><input type"r…

leetCode 1080.根到叶路径上的不足节点 + 递归 + 图解

给你二叉树的根节点 root 和一个整数 limit &#xff0c;请你同时删除树中所有 不足节点 &#xff0c;并返回最终二叉树的根节点。假如通过节点 node 的每种可能的 “根-叶” 路径上值的总和全都小于给定的 limit&#xff0c;则该节点被称之为 不足节点 &#xff0c;需要被删除…

养生馆服务预约会员管理系统小程序效果如何

中医养生馆的全国数量逐渐增加&#xff0c;各种疾病困扰下&#xff0c;有些病往往通过养生馆即可治好&#xff0c;比如常见的针灸、按摩、药理滋补、切脉等&#xff0c;都有很高的市场需求度&#xff0c;而随着众多商家入局赛道及消费升级&#xff0c;传统中医养生馆经营痛点也…

【C++】哈希(位图、布隆过滤器)

一、哈希的应用&#xff08;位图和布隆过滤器&#xff09; 1、位图&#xff08;bitset&#xff09; &#xff08;1&#xff09;位图概念 【题目】 给 40亿 个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这 40亿 个数中。…

电源的纹波

电源纹波的产生 我们常见的电源有线性电源和开关电源&#xff0c;它们输出的直流电压是由交流电压经整流、滤波、稳压后得到的。由于滤波不干净&#xff0c;直流电平之上就会附着包含周期性与随机性成分的杂波信号&#xff0c;这就产生了纹波。 在额定输出电压、电流的情况下…

Shell脚本:Linux Shell脚本学习指南(第三部分Shell高级)二

七、Shell Here String&#xff08;内嵌字符串&#xff0c;嵌入式字符串&#xff09; Here String 是《六、Shell Here Document&#xff08;内嵌文档/立即文档&#xff09;》的一个变种&#xff0c;它的用法如下&#xff1a; command <<< string command 是 Shell 命…

指定训练使用的GPU个数,没有指定定gpu id,训练在其中两个gpu上执行,但是线程id分布在所有4个gpu上,为什么?如何解决?

目录 问题背景 1 线程id分布在所有gpu&#xff08;包括未启用的gpu&#xff09;上原因&#xff1a; 2 在解决这个问题时&#xff0c;可以采取以下步骤&#xff1a; 3 修正深度学习框架默认使用所有可见 GPU 的问题 1 TensorFlow&#xff1a; 2 PyTorch&#xff1a; 3 K…

【【Linux编程介绍之关键配置和常用用法】】

Linux编程介绍之关键配置和常用用法 Hello World ! 我们所说的编写代码包括两部分&#xff1a;代码编写和编译&#xff0c;在Windows下可以使用Visual Studio来完成这两部&#xff0c;可以在 Visual Studio 下编写代码然后直接点击编译就可以了。但是在 Linux 下这两部分是分开…

13年老鸟总结,性能测试方法汇总+性能响应很慢排查方法(详全)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、性能测试包含哪…

智能优化算法应用:基于麻雀算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于麻雀算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于麻雀算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.麻雀算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

火锅店管理系统外卖点餐配送小程序的效果

火锅是餐饮行业重要的组成部分&#xff0c;在每个地方都受到追捧&#xff0c;其从业商家众多&#xff0c;头部连锁品牌也不少&#xff0c;近些年行业市场规模也一直增加&#xff0c;而随着消费升级及数字化转型&#xff0c;传统火锅店经营痛点不少&#xff1a; 火锅店的需求非…