• C#文件操作基础之File类和FileInfo类


    文件和I/O流的差异:


    文件是一些具有永久存储及特定顺序的字节组成的一个有序的、具有名称的集合。
    因此对于文件,我们经常想到文件夹路径,磁盘存储,文件和文件夹名等方面。
    I/O流提供一种后备存储写入字节和从后备存储读取字节的方式。
    后备存储能够为多种存储媒介之中的一个。


    System.IO命名空间中的经常使用类:


    BinaryReader     用特定的编码将基元数据类型读作二进制值
    BinaryWriter     以二进制形式将基元类型写入流,并支持用特定的编码写入字符串
    Directory        公开用于创建、移动和枚举通过文件夹和子文件夹的静态方法,无法被继                  承
    DirectoryInfo    公开用于创建、移动和枚举文件夹和子文件夹的实例方法,无法被继承
    File             提供创建、复制、删除、移动和打开文件的静态方法,协助创建                      FileStream对象
    FileInfo         提供创建、复制、删除、移动和打开文件的实例方法,而且帮助创建                  FileStream对象
    FileStream       公开以文件为主的Stream,既支持同步读写操作,也支持异步读写操                  作
    FileSystemInfo   为FileInfo和DirectoryInfo对象提供基类
    StreamReader     实现一个TextReader,使其以一种特定的编码从字节流中读取字符
    StreamWriter     实现一个TextWriter,使其以一种特定的编码向流中写入字符






    1.File类:


    Copy                  将现有文件拷贝到新文件

    Create                在指定路径中创建文件
    Delete                删除指定的文件,假设指定的文件不存在,则不引起异常
    Exists                确定指定的文件是否存在
    Move                  将指定文件移到新位置,并提供指定新文件名称的选项
    Open                  打开指定路径上的FileStream
    GetCreationTime       返回指定文件或文件夹的创建日期和时间
    OpenRead              打开现有文件进行读取
    OpenText              打开现有UTF-8编码文本文件以进行读取
    OpenWrite             打开现有文件进行写入




    2.FileInfo类:

    Directory       获取父文件夹的实例

    Exists          获取指示文件是否存在的值

    FullName        获取文件夹或文件的完整文件夹

    Length          获取当前文件的大小

    Name            获取文件名称



    3.File类和FileInfo类的基本操作方法


    注意:

    因为File类中的全部方法都是静态的,所以假设仅仅想运行一个操作,那么使用File类中方法的效率比使用对应的FileInfo类中的方法可能更高


    File类中的方法都是静态方法,在使用时须要对全部方法都运行安全检查。因此假设打算多次重用某个对象,可考虑改用FileInfo类中的对应方法,由于不总是须要安全检查。




    (1)推断文件是否存在Exists方法


    返回bool型,假设path为空或者没有权限,则返回false

    File:推断C盘根文件夹下有没有test.txt文件:

    File.Exists("C:\test.txt")


    FileInfo:

    FileInfo fileinfo = new FileInfo("C:\test.txt")

    if(fileinfo.Exists){}




    (2)创建文件用Create方法


    File类的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)


    File类Create方法參数说明

    path               文件名称

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

    options            FileOptions值之中的一个,它描写叙述怎样创建或改写该文件

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


    File类

    File.Create("C:\test.txt")


    FileInfo类:

    FileInfo fileinfo = new FileInfo("C:\test.txt")

    fileinfo.Create();




    (3)拷贝文件用File类的Copy方法以及FileInfo类的CopyTo方法


    File类的Copy方法或者FileInfo类的CopyTo方法

    File类的Copy方法有两种重载方式

    public static void Copy(string sourceFileName,string destFileName)

    public static void Copy(string sourceFileName,string destFileName,bool overwrite)

    sourceFileName表示要复制的文件,destFileName表示目标文件的名称,不能是文件夹,假设是第一种重载,则目标文件參数不能是现有文件

    overwrite表示能否够改写目标文件


    将C盘根文件夹下的test.txt文本文件拷贝到D盘根文件夹下:

    (这边注意措辞,说明D盘根文件夹下是没有test.txt文件的)

    File.Copy("C:\test.txt","D:\test.txt")


    FileInfo类的CopyTo方法也有两种重载方式

    public FileInfo CopyTo(string destFileName)

    public FileInfo CopyTo(string destFileName,bool overwrite)


    FileInfo fileinfo = new FileInfo("C:\test.txt");

    fileinfo.CopyTo("D:\test.txt",true);




    (4)移动文件用File类的Move方法和FileInfo类的MoveTo方法


    File类-Move方法-

    public static void Move(string sourceFileName,string destFileName)

    File.Move("C:\test.txt","D:\test.txt")


    FileInfo类-MoveTo方法-publicvoid MoveTo(string destFileName)

    FileInfo fileinfo = new FileInfo("C:\test.txt");

    fileinfo.MoveTo("D:\test.txt");




    (5)删除文件用Delete方法


    File类-Delete方法-public staticvoid Delete(string path)

    File.Delete("C:\test.txt")


    FileInfo类-Delete方法-publicvoid Delete(string path)

    FileInfo fileinfo = new FileInfo("C:\test.txt");

    fileinfo.Delete("D:\test.txt");


  • 相关阅读:
    router基本使用
    函数声明 和 var声明的优先级
    适用于Windows桌面应用程序的.NET Core 3
    在.Net Core 3.0中尝试新的System.Text.Json API
    在WPF中使用.NET Core 3.0依赖项注入和服务提供程序
    WPF控件获得焦点时去除虚线框
    Call asynchronous method in constructor
    将自定义控件加载到RichTextbox并进行交互
    WPF应用无法使用Snoop分析的解决办法
    关于序列化和反序列化
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4261539.html
Copyright © 2020-2023  润新知