C# 第七章『I/O数据流』◆第1节:File类、FileInfo 类

        一、System.IO 命名空间

System.IO 命名空间https://docs.microsoft.com/zh-cn/dotnet/api/system.io?view=netframework-4.0

        包含允许读写文件和数据流的类型以及提供基本文件和目录支持的类型。

        1、System.IO 命名空间的类

BinaryReader  用特定的编码将基元数据类型读作二进制值。(从二进制流读取原始数据)
BinaryWriter  将二进制中的基元类型写入流并支持用特定的编码写入字符串。(以二进制格式写入原始数据)
BufferedStream  将缓冲层添加到另一个流上的读取和写入操作。 此类不能被继承。(字节流的临时存储)
Directory  公开用于通过目录和子目录进行创建、移动和枚举的静态方法。 此类不能被继承。(有助于操作目录结构)
DirectoryInfo  公开用于创建、移动和枚举目录和子目录的实例方法。 此类不能被继承。(用于对目录执行操作)
DirectoryNotFoundException  找不到文件或目录的部件时引发的异常。
DriveInfo  提供对有关驱动器的信息的访问。
DriveNotFoundException  当尝试访问的驱动器或共享不可用时引发的异常。
EndOfStreamException  尝试在流末尾之后读取时引发的异常。
ErrorEventArgs  为 Error 事件提供数据。
File 提供用于创建、复制、删除、移动和打开单一文件的静态方法,并协助创建 FileStream 对象。
FileFormatException  应该符合一定文件格式规范的输入文件或数据流的格式不正确时引发的异常。
FileInfo 提供用于创建、复制、删除、移动和打开文件的属性和实例方法,并且帮助创建 FileStream 对象。 此类不能被继承。(用于对文件执行操作)
FileLoadException 找到托管程序集但不能加载时引发的异常。
FileNotFoundException 尝试访问磁盘上不存在的文件失败时引发的异常。
FileStream  为文件提供 Stream,既支持同步读写操作,也支持异步读写操作。(用于文件中任何位置的读写)
FileSystemEventArgs 为目录事件提供数据:Changed、Created、Deleted。
FileSystemInfo 为 FileInfo 和 DirectoryInfo 对象提供基类。
FileSystemWatcher 侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件。
InternalBufferOverflowException  内部缓冲区溢出时引发的异常。
InvalidDataException  数据流格式无效时引发的异常。
IODescriptionAttribute  设置可视化设计器在引用事件、扩展程序或属性时可显示的说明。
IOException  发生 I/O 错误时引发的异常。
MemoryStream  创建一个流,其后备存储为内存。(用于随机访问存储在内存中的数据流)
Path  对包含文件或目录路径信息的 String 实例执行操作。 这些操作是以跨平台的方式执行的。(对路径信息执行操作)
PathTooLongException  当路径名或完全限定的文件名长度超过系统定义的最大长度时引发的异常。
PipeException  当命名管道内出现错误时引发。
RenamedEventArgs  为 Renamed 事件提供数据。
Stream  提供字节序列的一般视图。 这是一个抽象类。
StreamReader  实现一个 TextReader,使其以一种特定的编码从字节流中读取字符。(用于从字节流中读取字符)
StreamWriter  实现一个 TextWriter,使其以一种特定的编码向流中写入字符。(用于向一个流中写入字符)
StringReader  实现从字符串进行读取的 TextReader。(用于读取字符串缓冲区)
StringWriter  实现用于将信息写入字符串的 TextWriter。 信息存储在基础 StringBuilder 中。(用于写入字符串缓冲区)
TextReader  表示可读取有序字符系列的读取器。
TextWriter  表示可以编写一个有序字符系列的编写器。 此类为抽象类。
UnmanagedMemoryAccessor  提供从托管代码随机访问非托管内存块的能力。
UnmanagedMemoryStream  提供从托管代码访问非托管内存块的能力。

        2、System.IO 命名空间的结构

WaitForChangedResult  包含发生的更改信息。

        3、System.IO 命名空间的枚举

DriveType  定义驱动器类型常数,包括 CDRom、Fixed、Network、NoRootDirectory、Ram、Removable 和 Unknown。
FileAccess  定义文件的读取、写入或读/写访问权限的常量。
FileAttributes  提供文件和目录的属性。
FileMode  指定操作系统打开文件的方式。
FileOptions  表示用于创建 FileStream 对象的高级选项。
FileShare  包含用于控制其他 FileStream 对象对同一文件可以具有的访问类型的常数。
HandleInheritability  指定基础句柄是否由子进程继承。
NotifyFilters  指定要在文件或文件夹中监视的更改。
SearchOption  指定是搜索当前目录,还是搜索当前目录及其所有子目录。
SeekOrigin  指定流中的位置以供查找使用。
WatcherChangeTypes  可能会发生的文件或目录的更改。

        3、System.IO 命名空间的委托

ErrorEventHandler  表示将处理 FileSystemWatcher 对象的 Error 事件的方法。
FileSystemEventHandler  表示将处理 FileSystemWatcher 类的 Changed、Created 或 Deleted 事件的方法。
RenamedEventHandler  表示将处理 Renamed 类的 FileSystemWatcher 事件的方法。

      二、File类

File 类https://docs.microsoft.com/zh-cn/dotnet/api/system.io.file?view=netframework-4.0

        1、定义

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

  • 命名空间:System.IO
  • 程序集:mscorlib.dll
  • 继承:Object→File
  • 属性:ComVisibleAttribute
[System.Runtime.InteropServices.ComVisible(true)]
public static class File

        使用 File 类执行典型操作,例如一次复制、移动、重命名、创建、打开、删除和追加到单个文件。 你还可以使用 File 类来获取和设置文件特性或 DateTime 与文件的创建、访问和写入相关的信息。 如果要对多个文件执行操作,请参阅 Directory.GetFiles 或 DirectoryInfo.GetFiles 。

        许多方法在 File 您创建或打开文件时返回其他 i/o 类型。 您可以使用这些其他类型进一步操作文件。 有关详细信息,请参阅 File 、或等特定成员 OpenText CreateText Create 。

        由于所有 File 方法都是静态的,因此 File FileInfo 如果你只想执行一个操作,则使用方法(而不是相应的实例方法)可能更有效。 所有 File 方法都需要正在处理的文件的路径。

        类的静态方法对 File 所有方法执行安全检查。 如果要多次重用某个对象,请考虑改用的相应实例方法 FileInfo ,因为安全检查并不总是必需的。

        默认情况下,将向所有用户授予对新文件的完全读/写访问权限。

描述了用于自定义各种方法的行为的枚举File

        2、FileDialog 类的方法

AppendAllLines(String, IEnumerable<String>)  向一个文件中追加行,然后关闭该文件。 如果指定文件不存在,此方法会创建一个文件,向其中写入指定的行,然后关闭该文件。
AppendAllLines(String, IEnumerable<String>, Encoding)  使用指定的编码向一个文件中追加行,然后关闭该文件。 如果指定文件不存在,此方法会创建一个文件,向其中写入指定的行,然后关闭该文件。
AppendAllText(String, String)  打开一个文件,向其中追加指定的字符串,然后关闭该文件。 如果文件不存在,此方法将创建一个文件,将指定的字符串写入文件,然后关闭该文件。
AppendAllText(String, String, Encoding)  使用指定的编码将指定的字符串追加到文件中,如果文件还不存在则创建该文件。
AppendText(String)  创建一个 StreamWriter,它将 UTF-8 编码文本追加到现有文件或新文件(如果指定文件不存在)。
Copy(String, String)  将现有文件复制到新文件。 不允许覆盖同名的文件。
Copy(String, String, Boolean)  将现有文件复制到新文件。 允许覆盖同名的文件。
Create(String)  在指定路径中创建或覆盖文件。
Create(String, Int32)  在指定路径中创建或覆盖文件,指定缓冲区大小。
Create(String, Int32, FileOptions)  创建或覆盖指定路径中的文件,指定缓冲区大小和一个描述如何创建或覆盖该文件的选项。
Create(String, Int32, FileOptions, FileSecurity)  创建或覆盖指定路径中的文件,指定缓冲区大小、描述如何创建或覆盖该文件的选项,以及用于确定文件的访问控制和审核安全的值。
CreateText(String)  创建或打开用于写入 UTF-8 编码文本的文件。 如果该文件已存在,将覆盖其内容。
Decrypt(String)  使用 Encrypt(String) 方法解密由当前帐户加密的文件。
Delete(String)  删除指定的文件。
Encrypt(String)  将某个文件加密,使得只有加密该文件的帐户才能将其解密。
Exists(String)  确定指定的文件是否存在。
GetAccessControl(String)  获取一个 FileSecurity 对象,它封装指定文件的访问控制列表 (ACL) 条目。
GetAccessControl(String, AccessControlSections)  获取一个 FileSecurity 对象,封装特定文件的指定类型的访问控制列表 (ACL) 项。
GetAttributes(String)  获取在此路径上的文件的 FileAttributes。
GetCreationTime(String)  返回指定文件或目录的创建日期和时间。
GetCreationTimeUtc(String)  返回指定的文件或目录的创建日期及时间,其格式为协调通用时 (UTC)。
GetLastAccessTime(String)  返回上次访问指定文件或目录的日期和时间。
GetLastAccessTimeUtc(String)  返回上次访问指定的文件或目录的日期及时间,其格式为协调通用时 (UTC)。
GetLastWriteTime(String)  返回上次写入指定文件或目录的日期和时间。
GetLastWriteTimeUtc(String)  返回上次写入指定的文件或目录的日期和时间,其格式为协调通用时 (UTC)。
Move(String, String)  将指定文件移到新位置,提供要指定新文件名的选项。
Open(String, FileMode)  通过不共享的读/写访问权限打开指定路径上的 FileStream。
Open(String, FileMode, FileAccess)  通过指定的模式和不共享的访问权限打开指定路径上的 FileStream。
Open(String, FileMode, FileAccess, FileShare)  打开指定路径上的 FileStream,具有带读、写或读/写访问的指定模式和指定的共享选项。
OpenRead(String)  打开现有文件以进行读取。
OpenText(String)  打开现有 UTF-8 编码文本文件以进行读取。
OpenWrite(String)  打开一个现有文件或创建一个新文件以进行写入。
ReadAllBytes(String)  打开一个二进制文件,将文件的内容读入一个字节数组,然后关闭该文件。
ReadAllLines(String)  打开一个文本文件,读取文件的所有行,然后关闭该文件。
ReadAllLines(String, Encoding)  打开一个文件,使用指定的编码读取文件的所有行,然后关闭该文件。
ReadAllText(String)  打开一个文本文件,读取文件中的所有文本,然后关闭此文件。UTF-8
ReadAllText(String, Encoding)  打开一个文件,使用指定的编码读取文件中的所有文本,然后关闭此文件。
ReadLines(String)  读取文件的行。
ReadLines(String, Encoding)  读取具有指定编码的文件的行。
Replace(String, String, String)  使用其他文件的内容替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份。
Replace(String, String, String, Boolean)  用其他文件的内容替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份,还可以忽略合并错误。
SetAccessControl(String, FileSecurity)  将 FileSecurity 对象描述的访问控制列表 (ACL) 项应用于指定的文件。
SetAttributes(String, FileAttributes)  获取指定路径上的文件的指定 FileAttributes。
SetCreationTime(String, DateTime)  设置创建该文件的日期和时间。
SetCreationTimeUtc(String, DateTime)  设置文件创建的日期和时间,其格式为协调通用时 (UTC)。
SetLastAccessTime(String, DateTime)  设置上次访问指定文件的日期和时间。
SetLastAccessTimeUtc(String, DateTime)  设置上次访问指定的文件的日期和时间,其格式为协调通用时 (UTC)。
SetLastWriteTime(String, DateTime)  设置上次写入指定文件的日期和时间。
SetLastWriteTimeUtc(String, DateTime)  设置上次写入指定的文件的日期和时间,其格式为协调通用时 (UTC)。
WriteAllBytes(String, Byte[])  创建一个新文件,在其中写入指定的字节数组,然后关闭该文件。 如果目标文件已存在,则覆盖该文件。
WriteAllLines(String, IEnumerable<String>)  创建一个新文件,向其中写入一个字符串集合,然后关闭该文件。
WriteAllLines(String, IEnumerable<String>, Encoding)  使用指定的编码创建一个新文件,向其中写入一个字符串集合,然后关闭该文件。
WriteAllLines(String, String[])  创建一个新文件,在其中写入指定的字节数组,然后关闭该文件。
WriteAllLines(String, String[], Encoding)  创建一个新文件,使用指定编码在其中写入指定的字符串数组,然后关闭该文件。
WriteAllText(String, String)  创建一个新文件,向其中写入指定的字符串,然后关闭文件。 如果目标文件已存在,则覆盖该文件。
WriteAllText(String, String, Encoding)  创建一个新文件,使用指定编码向其中写入指定的字符串,然后关闭文件。 如果目标文件已存在,则覆盖该文件。

        备注:File类方法的参量很多时候都是路径Path。File的一些方法可以返回FileStream和StreamWriter的对象,可以与它们配套使用。

         三、FileInfo 类

FileInfo 类https://docs.microsoft.com/zh-cn/dotnet/api/system.io.fileinfo?view=netframework-4.0         1、定义

  • 命名空间:System.IO
  • 程序集:mscorlib.dll
  • 继承:Object→MarshalByRefObject→FileSystemInfo→FileInfo
  • 属性:SerializableAttribute,ComVisibleAttribute

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

        FileInfo类也提供了与底层文件相关的属性,其中一些属性可以用来更新文件。

        FileInfo类的对象表示磁盘或者网络位置上的文件,只要提供文件路径就可以创建。

        2、FileDialog 类的构造函数

FileInfo(String)  初始化作为文件路径的包装的 FileInfo 类的新实例。
public FileInfo (string fileName);

参数
fileName:新文件的完全限定名或相对文件名。 路径不要以目录分隔符结尾。

         3、FileDialog 类的字段

FullPath  表示目录或文件的完全限定目录。(继承自 FileSystemInfo)
OriginalPath  最初由用户指定的目录(不论是相对目录还是绝对目录)。(继承自 FileSystemInfo)

        4、FileInfo 类的属性

Attributes  获取或设置当前文件或目录的特性。(继承自 FileSystemInfo)
CreationTime  获取或设置当前文件或目录的创建时间。(继承自 FileSystemInfo)
CreationTimeUtc  获取或设置当前文件或目录的创建时间,其格式为协调世界时 (UTC)。(继承自 FileSystemInfo)
Directory 获取父目录的实例。(即包含当前文件的目录,只读属性)
DirectoryName 获取表示目录的完整路径的字符串。(返回文件目录的路径,只读属性)
Exists 获取指示文件是否存在的值。
Extension 获取文件名的扩展名部分,包括前导点 即使它是整个文件名,或者不存在扩展名的空字符串。(继承自 FileSystemInfo)
FullName 获取目录或文件的完整目录。(继承自 FileSystemInfo)
IsReadOnly 获取或设置确定当前文件是否为只读的值。(只读特性的快捷方式,也可以通过Arrtibutes来访问这个属性)
LastAccessTime 获取或设置上次访问当前文件或目录的时间。(继承自 FileSystemInfo)
LastAccessTimeUtc  获取或设置上次访问当前文件或目录的时间,其格式为协调世界时 (UTC)。(继承自 FileSystemInfo)
LastWriteTime 获取或设置上次写入当前文件或目录的时间。(继承自 FileSystemInfo)
LastWriteTimeUtc  获取或设置上次写入当前文件或目录的时间,其格式为协调世界时 (UTC)。(继承自 FileSystemInfo)
Length 获取当前文件的大小(以字节为单位)。返回long值,只读属性
LinkTarget  获取位于其中 FullName的链接的目标路径,或者 null 如果此 FileSystemInfo 实例不表示链接。(继承自 FileSystemInfo)
Name 获取文件名。
UnixFileMode  获取或设置当前文件或目录的 Unix 文件模式。(继承自 FileSystemInfo)

         5、FileInfo 类的方法

AppendText()  创建一个 StreamWriter,它向 FileInfo 的此实例表示的文件追加文本。
CopyTo(String)  将现有文件复制到新文件,不允许覆盖现有文件。
CopyTo(String, Boolean)  将现有文件复制到新文件,允许覆盖现有文件。
Create()  创建文件。
CreateAsSymbolicLink(String)  创建指向指定pathToTarget位置的符号链接FullName。(继承自 FileSystemInfo)
CreateObjRef(Type)  创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。(继承自 MarshalByRefObject)
CreateText()  创建写入新文本文件的 StreamWriter。
Decrypt()  使用 Encrypt() 方法解密由当前帐户加密的文件。
Delete()  永久删除文件。
Encrypt()  将某个文件加密,使得只有加密该文件的帐户才能将其解密。
Equals(Object)  确定指定对象是否等于当前对象。(继承自 Object)
GetAccessControl()  获取 FileSecurity 对象,该对象封装当前 FileInfo 对象所描述的文件的访问控制列表 (ACL) 项。
GetAccessControl(AccessControlSections)  获取一个 FileSecurity 对象,该对象封装当前 FileInfo 对象所描述的文件的指定类型的访问控制列表 (ACL) 项。
GetHashCode()  作为默认哈希函数。(继承自 Object)
GetLifetimeService()  检索控制此实例的生存期策略的当前生存期服务对象。(继承自 MarshalByRefObject)
GetObjectData(SerializationInfo, StreamingContext)  设置带有文件名和附加异常信息的 SerializationInfo 对象。(继承自 FileSystemInfo)
GetType()  获取当前实例的 Type。(继承自 Object)
InitializeLifetimeService()  获取生存期服务对象来控制此实例的生存期策略。(继承自 MarshalByRefObject)
MemberwiseClone()  创建当前 Object 的浅表副本。(继承自 Object)
MemberwiseClone(Boolean)  创建当前 MarshalByRefObject 对象的浅表副本。(继承自 MarshalByRefObject)
MoveTo(String)  将指定文件移到新位置,提供要指定新文件名的选项。
Open(FileMode)  在指定的模式中打开文件。
Open(FileMode, FileAccess)  用读、写或读/写访问权限在指定模式下打开文件。
Open(FileMode, FileAccess, FileShare)  用读、写或读/写访问权限和指定的共享选项在指定的模式中打开文件。
OpenRead()  创建一个只读的 FileStream。
OpenText()  创建使用从现有文本文件中读取的 UTF8 编码的 StreamReader。
OpenWrite()  创建一个只写的 FileStream。
Refresh()  刷新对象的状态。(继承自 FileSystemInfo)
Replace(String, String)  使用当前 FileInfo 对象所描述的文件替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份。
Replace(String, String, Boolean)  使用当前 FileInfo 对象所描述的文件替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份。 还指定是否忽略合并错误。
ResolveLinkTarget(Boolean)  获取指定链接的目标。(继承自 FileSystemInfo)
SetAccessControl(FileSecurity)  将 FileSecurity 对象所描述的访问控制列表 (ACL) 项应用于当前 FileInfo 对象所描述的文件。
ToString()  以字符串形式返回路径。 将 Name 属性用于完整路径。

        备注:由于File类中的所有方法都是静态的,所以如果只想执行一种操作,那么使用File类中的方法的效率要比使用相应的FileInfo类中的方法可能更高。

        在使用File类中的方法时,需要对所有方法都执行安全检查,因此如果打算多次重用某个对象,则可以考虑用FileInfo类中的相应方法,因为这些方法并不总是需要执行安全检查。

        File类是静态方法,FileInfo类是动态方法,使用时必须通过new关键字来创建实例。

猜你喜欢

转载自blog.csdn.net/qq_45336030/article/details/126556867