首页 > C# > C#中的目录和文件相关操作
2021
10-12

C#中的目录和文件相关操作

System.IO命名空间中的Directory和DirectoryInfo用于操作目录,File和FileInfo用于操作文件,这些类都不能被继承

其中Directory和File用于提供目录或文件操作的静态方法

DirectoryInfo和FileInfo类的基类是FileSystemInfo,提供目录或文件操作的实例方法

在目录和文件操作过程中需要用到参数:

    Attributes参数用于获取或设置当前文件或目录的特性
        该参数为一个FileAttributes枚举,可用成员有
        Archive:此文件标记为包含在增量备份操作中。在增量备份期间处理文件时,备份软件应进行清理该属性
        Compressed:此文件是压缩文件
        Directory:此文件是一个目录
        Encrypted:此文件或目录已加密。对于目录来说,表示新创建的文件和目录在默认情况下是加密的
        Hidden:文件是隐藏的,因此没有包括在普通的目录列表中
        IntegrityStream:文件或目录包括完整性支持数据
            对于文件,文件中的所有数据流具有完整性支持
            对于目录,所有新文件和子目录在该目录中和默认情况下应包括完整性支持
        Normal:该文件是没有特殊属性的标准文件。仅当其单独使用时,此特性才有效
        NoScrubData:文件或目录从完整性扫描数据中排除。 对于目录,所有新文件和子目录在该目录中和默认情况下应不包括数据完整性
        NotContentIndexed:将不会通过操作系统的内容索引服务来索引此文件
        Offline:此文件处于脱机状态,文件数据不能立即供使用
        ReadOnly:文件为只读文件
        ReparsePoint:文件包含一个重新分析点,它是一个与文件或目录关联的用户定义的数据块
        SparseFile:此文件是稀疏文件。稀疏文件一般是数据通常为零的大文件
        System:此文件是系统文件。该文件是操作系统的一部分或者由操作系统以独占方式使用
        Temporary:文件是临时文件
    Encoding参数用于指定读取或写入文件时的编码:
        通过System.Text.Encoding.GetEncoding(encoding)来获取指定编码值(不区分大小写)
        System.Text.Encoding.GetEncoding("gb2312")
        System.Text.Encoding.GetEncoding("utf-8")
        System.Text.Encoding.UTF8:预设的UTF-8编码值
        System.Text.Encoding.Default:自动检测计算机默认编码

Directory和File类

两个类提供的相同的方法

    Exists(String):检测目录或文件是否存在
    Delete(String [,Boolean]):删除目录或文件
        默认只能删除空目录,第二个布尔值参数为true则会删除所有子目录和文件

    GetCreationTime(String):获取本地创建日期和时间
    GetCreationTimeUtc(String):获取UTC创建日期和时间
    GetLastAccessTime(String):获取本地最后访问日期和时间
    GetLastAccessTimeUtc(String):获取UTC最后访问日期和时间
    GetLastWriteTime(String):获取本地最后修改日期和时间
    GetLastWriteTimeUtc(String):获取UTC最后修改日期和时间
    SetCreationTime(String, System.DateTime):设置本地创建日期和时间
    SetCreationTimeUtc(String, System.DateTime):设置UTC创建日期和时间
    SetLastAccessTime(String, System.DateTime):设置本地最后访问日期和时间
    SetLastAccessTimeUtc(String, System.DateTime):设置UTC最后访问日期和时间
    SetLastWriteTime(String, System.DateTime):设置本地最后修改日期和时间
    SetLastWriteTimeUtc(String, System.DateTime):设置UTC最后修改日期和时间

Directory类

GetCurrentDirectory():获取应用程序的当前工作目录(string)
SetCurrentDirectory(String):将应用程序的当前工作目录设置为指定的目录
CreateDirectory(String):创建目录(可以创建多层目录)
Move(String, String):将文件或目录及其内容移到新位置
    目录只能移动到不存在的目录,目标目录已存在会报错
    文件移动时目标字符串即使时以斜杠结尾的目录也会将最后的目录名作为文件名
GetDirectories(String[, SearchString] [,SearchOption]):返回指定目录中的所有子目录(string[])
    第二个参数指定搜索模式使用* 和 ?通配符
    第三个参数时枚举,成员有TopDirectoryOnly(仅搜索当前目录)、AllDirectories(搜索当前目录和所有子目录)
GetFiles(String[, SearchString] [,SearchOption]):返回指定目录中所有文件(string[])
GetFileSystemEntries(String[, SearchString] [,SearchOption]):返回指定路径中的所有文件和子目录
GetDirectoryRoot(String):返回指定路径的卷信息(盘符,如"返回D:\")
GetLogicalDrives():返回计算机所有盘符名称(string[])
GetParent(String):检索指定路径的父目录(System.IO.DirectoryInfo)

File类

Open(String, FileMode [, FileAccess] [, FileShare]):返回FileStream文件流
    FileAccess默认为ReadWrite,FileShare默认为None
Create(String[, Int32] [, FileOptions]):返回FileStream流,可以指定缓冲区大小和描述如何创建或覆盖该文件的选项
OpenRead(String):创建只读FileStream流
OpenWrite(String):返回只写FileStream流

AppendText(String):返回StreamWriter流用于追加内容,使用UTF-8编码
CreateText(String):返回StreamWriter流,使用UTF-8编码,文件已存在将覆盖
OpenText(String):以UTF-8编码返回StreamReader流

AppendAllLines(String, string[] [, Encoding]) :向一个文件中逐行追加数组内容,然后关闭该文件,文件不存在会创建,目录不存在不会创建
AppendAllText(String, String [, Encoding]):向一个文件中追加字符串内容,然后关闭该文件
ReadAllBytes(String):打开一个二进制文件,返回文件的内容的字节数组,然后关闭该文件
ReadAllLines(String[, Encoding]):打开一个文本文件,读取文件的所有行,然后关闭该文件,返回string[]
ReadAllText(String[, Encoding]):打开一个文本文件,读取所有文本,然后关闭此文件
ReadLines(String[, Encoding]):读取文件所有行,返回枚举类型
WriteAllBytes(String, Byte[]):创建一个文件,写入指定的字节数组,然后关闭该文件。文件已存在则覆盖该
WriteAllLines(String, data [, Encoding]):创建一个文件,写入data数据(一个字符串集合或字符串数组),然后关闭该文件
WriteAllText(String, String [, Encoding]):创建一个文件,写入指定的字符串,然后关闭文件。 文件已存在则覆盖

Copy(String, String[, Boolean]):复制文件。第三个参数表示允许覆盖同名的文件
Create(String[, Int32] [, FileOptions]):创建或覆盖指定路径中的文件,指定缓冲区大小和一个描述如何创建或覆盖该文件的选项
Encrypt(String):将文件加密,使得只有加密该文件的帐户才能将其解密
Decrypt(String):解密由当前帐户加密的文件
    只有能够使用NTFS加密文件系统(EFS)的Windows平台才支持此API
    在非Windows系统、Windows Home Edition系统或非NTFS驱动器上使用此项的任何尝试都会报错
    Decrypt方法要求对要解密的文件进行独占访问,如果另一个进程正在使用该文件,则将引发异常。
    如果文件未加密, Decrypt将返回一个非零值,指示成功
GetAttributes(String):获取文件的FileAttributes
Replace(new_file, old_file, bak_file[,Boolean]):用其他文件的内容替换指定文件的内容,并创建被替换文件的备份
    可选布尔值为是否忽略合并错误,如特性和访问控制列表(ACL)
SetAttributes(String, FileAttributes):设定指定文件的FileAttributes

DirectoryInfo和FileInfo类

两个类的实例都拥有的属性和方法:

    Attributes:获取或设置特性
    Exists:目录或文件是否存在
    Extension:获取文件扩展名(包含点)
    FullName:获取目录或文件的完整路径
    Name:获取目录或文件的名称(路径中最后不包含斜杠的部分)
    CreationTime:获取或设置本地创建时间
    CreationTimeUtc:获取或设置UTC创建时间
    LastAccessTime:获取或设置本地最后访问时间
    LastAccessTimeUtc:获取或设置UTC最后访问时间
    LastWriteTime:获取或设置本地最后修改时间
    LastWriteTimeUtc:获取或设置UTC最后修改时间

    MoveTo(String[, Boolean]):移动到新位置,当移动文件时布尔值指示是否覆盖同名文件
    Create():如果实例中的目录或文件不存在则创建
    Refresh():刷新实例对象的状态
    GetHashCode():获取实例对象的哈希值
    ToString():获取传递给狗在函数的目录或文件的原始值
    Delete([Boolean]):删除实例指定的目录或文件
        如果删除的是目录,默认不能删除非空目录,需要提供第二个布尔值参数,为true则会删除所有子目录和文件
        默认只能删除空目录,参数为true则会删除所有子目录和文件

DirectoryInfo类

构造函数:DirectoryInfo(String)

属性:
Parent:获取父目录
Root:获取根部分(盘符)

方法
CreateSubdirectory(String):使用相对路径(相对与实例中的目录)创建一个或多个子目录
GetDirectories([String] [, SearchOption]):获取子目录
GetFiles([String] [, SearchOption]):获取目录中的文件
GetFileSystemInfos([String] [, SearchOption]):获取目录中的子目录和文件
    第一个参数指定搜索模式使用* 和 ?通配符
    第二个参数时枚举,成员有TopDirectoryOnly(仅搜索当前目录)、AllDirectories(搜索当前目录和所有子目录)

FileInfo类

构造函数:FileInfo(String)

属性

Directory:获取父目录的DirectoryInfo实例
DirectoryName:获取表示目录的完整路径的字符串
IsReadOnly:获取或设置确定当前文件是否只读
Length:获取当前文件的大小(以字节为单位)

方法

Open(FileMode[, FileAccess] [, FileShare]):返回FileStream文件流
OpenRead():创建只读FileStream流
OpenWrite():返回只写FileStream流
AppendText():返回StreamWriter流用于追加内容
CreateText():返回写入新文本文件的StreamWriter流
OpenText():以UTF-8编码返回StreamReader流

CopyTo(String):将现有文件复制到新文件,不允许覆盖现有文件。
CopyTo(String, Boolean):将现有文件复制到新文件,允许覆盖现有文件。
Decrypt():使用 Encrypt() 方法解密由当前帐户加密的文件。
Encrypt():将某个文件加密,使得只有加密该文件的帐户才能将其解密。
Replace(old_file, bak_file[,Boolean]):
    用实例对象的文件内容替换指定文件的内容,并创建被替换文件的备份
    可选布尔值为是否忽略合并错误,如特性和访问控制列表(ACL)
最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。