C# FileInfo(System.IO)
环境:Visual Studio 2017,.NET Framework 4.0
本文参考MSDN : https://docs.microsoft.com/zh-cn/dotnet/api/system.io.fileinfo?view=net-5.0
FileInfo:提供用于创建、复制、删除、移动和打开文件的属性和实例方法,并且帮助创建 FileStream 对象。
目录
属性
方法
FileInfo class
应用示例
1、读取文件内容
2、创建文件并写入文本
3、读取被占用的文件
4、文件创建时间、更新时间
属性
名称 | 描述 |
---|---|
Attributes |
获取或设置当前文件或目录的特性。 (继承自 FileSystemInfo) |
CreationTime |
获取或设置当前文件或目录的创建时间。 (继承自 FileSystemInfo) |
CreationTimeUtc |
获取或设置当前文件或目录的创建时间,其格式为协调世界时 (UTC)。 (继承自 FileSystemInfo) |
Directory | 获取父目录的实例。 |
DirectoryName | 获取表示目录的完整路径的字符串。 |
Exists | 获取指示文件是否存在的值。 |
Extension |
获取表示文件扩展名部分的字符串。 (继承自 FileSystemInfo) |
FullName |
获取目录或文件的完整目录。 (继承自 FileSystemInfo) |
IsReadOnly | 获取或设置确定当前文件是否为只读的值。 |
LastAccessTime |
获取或设置上次访问当前文件或目录的时间。 (继承自 FileSystemInfo) |
LastAccessTimeUtc |
获取或设置上次访问当前文件或目录的时间,其格式为协调世界时 (UTC)。 (继承自 FileSystemInfo) |
LastWriteTime |
获取或设置上次写入当前文件或目录的时间。 (继承自 FileSystemInfo) |
LastWriteTimeUtc |
获取或设置上次写入当前文件或目录的时间,其格式为协调世界时 (UTC)。 (继承自 FileSystemInfo) |
Length | 获取当前文件的大小(以字节为单位)。 |
Name | 获取文件名。 |
方法
名称 | 描述 |
---|---|
AppendText() | 创建一个 StreamWriter,它向 FileInfo 的此实例表示的文件追加文本。 |
CopyTo(String) | 将现有文件复制到新文件,不允许覆盖现有文件。 |
CopyTo(String, Boolean) | 将现有文件复制到新文件,允许覆盖现有文件。 |
Create() | 创建文件。 |
CreateObjRef(Type) |
创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject) |
CreateText() | 创建写入新文本文件的 StreamWriter。 |
Decrypt() | 使用 Encrypt() 方法解密由当前帐户加密的文件。 |
Delete() | 永久删除文件。 |
Encrypt() | 将某个文件加密,使得只有加密该文件的帐户才能将其解密。 |
Equals(Object) |
确定指定对象是否等于当前对象。 (继承自 Object) |
GetHashCode() |
作为默认哈希函数。 (继承自 Object) |
GetObjectData(SerializationInfo, StreamingContext) |
设置带有文件名和附加异常信息的 SerializationInfo 对象。 (继承自 FileSystemInfo) |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
MemberwiseClone(Boolean) |
创建当前 MarshalByRefObject 对象的浅表副本。 (继承自 MarshalByRefObject) |
MoveTo(String) | 将指定文件移到新位置,提供要指定新文件名的选项。 |
MoveTo(String, Boolean) | 将指定文件移动到新位置,提供指定新文件名和覆盖目标文件(如果它已存在)的选项。 |
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 对象所描述的文件替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份。 还指定是否忽略合并错误。 |
ToString() | 以字符串形式返回路径。 将 Name 属性用于完整路径。 |
FileInfo class
using System.Runtime.InteropServices;
using System.Security;
using System.Security.AccessControl;namespace System.IO
{//// 摘要:// 提供用于创建、复制、删除、移动和打开文件的属性和实例方法,并且帮助创建 System.IO.FileStream 对象。 此类不能被继承。 若要浏览此类型的.NET// Framework 源代码,请参阅 Reference Source。[ComVisible(true)]public sealed class FileInfo : FileSystemInfo{//// 摘要:// 初始化作为文件路径的包装的 System.IO.FileInfo 类的新实例。//// 参数:// fileName:// 新文件的完全限定名或相对文件名。 路径不要以目录分隔符结尾。//// 异常:// T:System.ArgumentNullException:// fileName 为 null。//// T:System.Security.SecurityException:// 调用方没有所要求的权限。//// T:System.ArgumentException:// 文件名为空,仅包含空格,或包含无效字符。//// T:System.UnauthorizedAccessException:// 访问 fileName 被拒绝。//// T:System.IO.PathTooLongException:// 指定的路径和/或文件名超过了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须少于 248 个字符,且文件名必须少于 260 个字符。//// T:System.NotSupportedException:// fileName 在字符串中间包含一个冒号 (:)。[SecuritySafeCritical]public FileInfo(string fileName);//// 摘要:// 获取父目录的实例。//// 返回结果:// 表示此文件父目录的 System.IO.DirectoryInfo 对象。//// 异常:// T:System.IO.DirectoryNotFoundException:// 指定的路径无效,例如位于未映射的驱动器上。//// T:System.Security.SecurityException:// 调用方没有所要求的权限。public DirectoryInfo Directory { get; }//// 摘要:// 获取表示目录的完整路径的字符串。//// 返回结果:// 表示目录的完整路径的字符串。//// 异常:// T:System.ArgumentNullException:// 为目录名传入 null。//// T:System.IO.PathTooLongException:// 完全限定路径为 260 或更多字符。//// T:System.Security.SecurityException:// 调用方没有所要求的权限。public string DirectoryName { get; }//// 摘要:// 获取当前文件的大小(以字节为单位)。//// 返回结果:// 当前文件的大小(以字节为单位)。//// 异常:// T:System.IO.IOException:// System.IO.FileSystemInfo.Refresh 无法更新文件或目录的状态。//// T:System.IO.FileNotFoundException:// 文件不存在。 - 或 - 针对某个目录调用了 Length 属性。public long Length { get; }//// 摘要:// 获取文件名。//// 返回结果:// 文件的名称。public override string Name { get; }//// 摘要:// 获取或设置确定当前文件是否为只读的值。//// 返回结果:// 如果当前文件为只读,则为 true;否则为 false。//// 异常:// T:System.IO.FileNotFoundException:// 找不到当前 System.IO.FileInfo 对象描述的文件。//// T:System.IO.IOException:// 打开文件时发生 I/O 错误。//// T:System.UnauthorizedAccessException:// 当前平台不支持此操作。 - 或 - 调用方没有所要求的权限。//// T:System.ArgumentException:// 此用户没有写入权限,但尝试将此属性设置为 false。public bool IsReadOnly { get; set; }//// 摘要:// 获取指示文件是否存在的值。//// 返回结果:// 如果该文件存在,则为 true;如果文件不存在或文件即是目录,则为 false。public override bool Exists { get; }//// 摘要:// 创建一个 System.IO.StreamWriter,它向 System.IO.FileInfo 的此实例表示的文件追加文本。//// 返回结果:// 一个新的 StreamWriter。public StreamWriter AppendText();//// 摘要:// 将现有文件复制到新文件,不允许覆盖现有文件。//// 参数:// destFileName:// 要复制到的新文件的名称。//// 返回结果:// 带有完全限定路径的新文件。//// 异常:// T:System.ArgumentException:// destFileName 为空,仅包含空格,或包含无效字符。//// T:System.IO.IOException:// 出现错误,或目标文件已存在。//// T:System.Security.SecurityException:// 调用方没有所要求的权限。//// T:System.ArgumentNullException:// destFileName 为 null。//// T:System.UnauthorizedAccessException:// 传入一个目录路径或此文件将被移至其他驱动器。//// T:System.IO.DirectoryNotFoundException:// 在 destFileName 中指定的此目录不存在。//// T:System.IO.PathTooLongException:// 指定的路径和/或文件名超过了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须少于 248 个字符,且文件名必须少于 260 个字符。//// T:System.NotSupportedException:// destFileName 在其字符串中包含冒号 (:) ,但并未指定卷。public FileInfo CopyTo(string destFileName);//// 摘要:// 将现有文件复制到新文件,允许覆盖现有文件。//// 参数:// destFileName:// 要复制到的新文件的名称。//// overwrite:// 如果允许覆盖现有文件,则为 true;否则为 false。//// 返回结果:// 为新文件;如果 overwrite 是 true,则为现有文件的覆盖。 如果文件存在且 overwrite 为 false,则引发 System.IO.IOException。//// 异常:// T:System.ArgumentException:// destFileName 为空,仅包含空格,或包含无效字符。//// T:System.IO.IOException:// 出现错误,或目标文件已存在,且 overwrite 为 false。//// T:System.Security.SecurityException:// 调用方没有所要求的权限。//// T:System.ArgumentNullException:// destFileName 为 null。//// T:System.IO.DirectoryNotFoundException:// 在 destFileName 中指定的此目录不存在。//// T:System.UnauthorizedAccessException:// 传入一个目录路径或此文件将被移至其他驱动器。//// T:System.IO.PathTooLongException:// 指定的路径和/或文件名超过了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须少于 248 个字符,且文件名必须少于 260 个字符。//// T:System.NotSupportedException:// destFileName 在字符串中间包含一个冒号 (:)。public FileInfo CopyTo(string destFileName, bool overwrite);//// 摘要:// 创建文件。//// 返回结果:// 新文件。public FileStream Create();//// 摘要:// 创建写入新文本文件的 System.IO.StreamWriter。//// 返回结果:// 一个新的 StreamWriter。//// 异常:// T:System.UnauthorizedAccessException:// 文件名是目录。//// T:System.IO.IOException:// 此盘为只读。//// T:System.Security.SecurityException:// 调用方没有所要求的权限。public StreamWriter CreateText();//// 摘要:// 使用 System.IO.FileInfo.Encrypt 方法解密由当前帐户加密的文件。//// 异常:// T:System.IO.DriveNotFoundException:// 指定了无效的驱动器。//// T:System.IO.FileNotFoundException:// 找不到当前 System.IO.FileInfo 对象描述的文件。//// T:System.IO.IOException:// 打开文件时发生 I/O 错误。//// T:System.NotSupportedException:// 文件系统不是 NTFS。//// T:System.PlatformNotSupportedException:// 当前操作系统不是 Microsoft Windows NT 或更高版本。//// T:System.UnauthorizedAccessException:// 当前 System.IO.FileInfo 对象描述的文件为只读文件。 - 或 - 当前平台不支持此操作。 - 或 - 调用方没有所要求的权限。[ComVisible(false)]public void Decrypt();//// 摘要:// 永久删除文件。//// 异常:// T:System.IO.IOException:// 目标文件打开或在运行 Microsoft Windows NT 的计算机上进行内存映射。 - 或 - 在文件中存在开放句柄,并且操作系统是 Windows// XP 或更早的版本。 枚举目录和文件可能会导致此开放句柄出现。 有关详细信息,请参阅如何:枚举目录和文件。//// T:System.Security.SecurityException:// 调用方没有所要求的权限。//// T:System.UnauthorizedAccessException:// 路径是一个目录。[SecuritySafeCritical]public override void Delete();//// 摘要:// 将某个文件加密,使得只有加密该文件的帐户才能将其解密。//// 异常:// T:System.IO.DriveNotFoundException:// 指定了无效的驱动器。//// T:System.IO.FileNotFoundException:// 找不到当前 System.IO.FileInfo 对象描述的文件。//// T:System.IO.IOException:// 打开文件时发生 I/O 错误。//// T:System.NotSupportedException:// 文件系统不是 NTFS。//// T:System.PlatformNotSupportedException:// 当前操作系统不是 Microsoft Windows NT 或更高版本。//// T:System.UnauthorizedAccessException:// 当前 System.IO.FileInfo 对象描述的文件为只读文件。 - 或 - 当前平台不支持此操作。 - 或 - 调用方没有所要求的权限。[ComVisible(false)]public void Encrypt();//// 摘要:// 获取 System.Security.AccessControl.FileSecurity 对象,该对象封装当前 System.IO.FileInfo 对象所描述的文件的访问控制列表// (ACL) 项。//// 返回结果:// 一个 System.Security.AccessControl.FileSecurity 对象,该对象封装当前文件的访问控制规则。//// 异常:// T:System.IO.IOException:// 打开文件时发生 I/O 错误。//// T:System.PlatformNotSupportedException:// 当前操作系统不是 Microsoft Windows 2000 或更高版本。//// T:System.Security.AccessControl.PrivilegeNotHeldException:// 当前的系统帐户没有管理权限。//// T:System.SystemException:// 找不到文件。//// T:System.UnauthorizedAccessException:// 当前平台不支持此操作。 - 或 - 调用方没有所要求的权限。public FileSecurity GetAccessControl();//// 摘要:// 获取一个 System.Security.AccessControl.FileSecurity 对象,该对象封装当前 System.IO.FileInfo// 对象所描述的文件的指定类型的访问控制列表 (ACL) 项。//// 参数:// includeSections:// System.Security.AccessControl.AccessControlSections 值之一,该值指定要检索的访问控制项组。//// 返回结果:// 一个 System.Security.AccessControl.FileSecurity 对象,该对象封装当前文件的访问控制规则。//// 异常:// T:System.IO.IOException:// 打开文件时发生 I/O 错误。//// T:System.PlatformNotSupportedException:// 当前操作系统不是 Microsoft Windows 2000 或更高版本。//// T:System.Security.AccessControl.PrivilegeNotHeldException:// 当前的系统帐户没有管理权限。//// T:System.SystemException:// 找不到文件。//// T:System.UnauthorizedAccessException:// 当前平台不支持此操作。 - 或 - 调用方没有所要求的权限。public FileSecurity GetAccessControl(AccessControlSections includeSections);//// 摘要:// 将指定文件移到新位置,提供要指定新文件名的选项。//// 参数:// destFileName:// 要将文件移动到的路径,可以指定另一个文件名。//// 异常:// T:System.IO.IOException:// 发生 I/O 错误,例如目标文件已存在或目标设备未就绪。//// T:System.ArgumentNullException:// destFileName 为 null。//// T:System.ArgumentException:// destFileName 为空,仅包含空格,或包含无效字符。//// T:System.Security.SecurityException:// 调用方没有所要求的权限。//// T:System.UnauthorizedAccessException:// destFileName 为只读或是目录。//// T:System.IO.FileNotFoundException:// 未找到此文件。//// T:System.IO.DirectoryNotFoundException:// 指定的路径无效,例如位于未映射的驱动器上。//// T:System.IO.PathTooLongException:// 指定的路径和/或文件名超过了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须少于 248 个字符,且文件名必须少于 260 个字符。//// T:System.NotSupportedException:// destFileName 在字符串中间包含一个冒号 (:)。[SecuritySafeCritical]public void MoveTo(string destFileName);//// 摘要:// 在指定的模式中打开文件。//// 参数:// mode:// 一个 System.IO.FileMode 常数,它指定打开文件所采用的模式(例如 Open 或 Append)。//// 返回结果:// 在指定模式中打开、具有读/写访问权限且不共享的文件。//// 异常:// T:System.IO.FileNotFoundException:// 未找到此文件。//// T:System.UnauthorizedAccessException:// 文件为只读或是目录。//// T:System.IO.DirectoryNotFoundException:// 指定的路径无效,例如位于未映射的驱动器上。//// T:System.IO.IOException:// 此文件已打开。public FileStream Open(FileMode mode);//// 摘要:// 用读、写或读/写访问权限和指定的共享选项在指定的模式中打开文件。//// 参数:// mode:// 一个 System.IO.FileMode 常数,它指定打开文件所采用的模式(例如 Open 或 Append)。//// access:// 一个 System.IO.FileAccess 常数,它指定是使用 Read、Write 还是 ReadWrite 文件访问来打开文件。//// share:// 一个 System.IO.FileShare 常数,它指定其他 FileStream 对象对此文件拥有的访问类型。//// 返回结果:// 用指定的模式、访问权限和共享选项打开的 System.IO.FileStream 对象。//// 异常:// T:System.Security.SecurityException:// 调用方没有所要求的权限。//// T:System.IO.FileNotFoundException:// 未找到此文件。//// T:System.UnauthorizedAccessException:// path 为只读或是目录。//// T:System.IO.DirectoryNotFoundException:// 指定的路径无效,例如位于未映射的驱动器上。//// T:System.IO.IOException:// 此文件已打开。public FileStream Open(FileMode mode, FileAccess access, FileShare share);//// 摘要:// 用读、写或读/写访问权限在指定模式下打开文件。//// 参数:// mode:// 一个 System.IO.FileMode 常数,它指定打开文件所采用的模式(例如 Open 或 Append)。//// access:// 一个 System.IO.FileAccess 常数,它指定是使用 Read、Write 还是 ReadWrite 文件访问来打开文件。//// 返回结果:// 用指定模式和访问权限打开的且不共享的 System.IO.FileStream 对象。//// 异常:// T:System.Security.SecurityException:// 调用方没有所要求的权限。//// T:System.IO.FileNotFoundException:// 未找到此文件。//// T:System.UnauthorizedAccessException:// path 为只读或是目录。//// T:System.IO.DirectoryNotFoundException:// 指定的路径无效,例如位于未映射的驱动器上。//// T:System.IO.IOException:// 此文件已打开。public FileStream Open(FileMode mode, FileAccess access);//// 摘要:// 创建一个只读的 System.IO.FileStream。//// 返回结果:// 一个新的只读的 System.IO.FileStream 对象。//// 异常:// T:System.UnauthorizedAccessException:// path 为只读或是目录。//// T:System.IO.DirectoryNotFoundException:// 指定的路径无效,例如位于未映射的驱动器上。//// T:System.IO.IOException:// 此文件已打开。public FileStream OpenRead();//// 摘要:// 创建使用从现有文本文件中读取的 UTF8 编码的 System.IO.StreamReader。//// 返回结果:// 使用 UTF8 编码的新的 StreamReader。//// 异常:// T:System.Security.SecurityException:// 调用方没有所要求的权限。//// T:System.IO.FileNotFoundException:// 未找到此文件。//// T:System.UnauthorizedAccessException:// path 为只读或是目录。//// T:System.IO.DirectoryNotFoundException:// 指定的路径无效,例如位于未映射的驱动器上。[SecuritySafeCritical]public StreamReader OpenText();//// 摘要:// 创建一个只写的 System.IO.FileStream。//// 返回结果:// 新的或现有文件的只写非共享的 System.IO.FileStream 对象。//// 异常:// T:System.UnauthorizedAccessException:// 创建 System.IO.FileInfo 对象的实例时指定的路径为只读或是目录。//// T:System.IO.DirectoryNotFoundException:// 创建 System.IO.FileInfo 对象的实例时指定的路径无效,例如此路径位于未映射的驱动器。public FileStream OpenWrite();//// 摘要:// 使用当前 System.IO.FileInfo 对象所描述的文件替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份。//// 参数:// destinationFileName:// 要替换为当前文件的文件的名称。//// destinationBackupFileName:// 文件的名称,该文件用于创建 destFileName 参数所描述的文件的备份。//// 返回结果:// 一个 System.IO.FileInfo 对象,该对象封装有关 destFileName 参数所描述的文件的信息。//// 异常:// T:System.ArgumentException:// destFileName 参数描述的路径格式不合法。 - 或 - destBackupFileName 参数描述的路径格式不合法。//// T:System.ArgumentNullException:// destFileName 参数为 null。//// T:System.IO.FileNotFoundException:// 找不到当前 System.IO.FileInfo 对象描述的文件。 - 或 - 找不到 destinationFileName 参数描述的文件。//// T:System.PlatformNotSupportedException:// 当前操作系统不是 Microsoft Windows NT 或更高版本。[ComVisible(false)]public FileInfo Replace(string destinationFileName, string destinationBackupFileName);//// 摘要:// 使用当前 System.IO.FileInfo 对象所描述的文件替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份。 还指定是否忽略合并错误。//// 参数:// destinationFileName:// 要替换为当前文件的文件的名称。//// destinationBackupFileName:// 文件的名称,该文件用于创建 destFileName 参数所描述的文件的备份。//// ignoreMetadataErrors:// 若要忽略从被替换文件到替换文件的合并错误(例如特性和 ACL),请设置为 true;否则设置为 false。//// 返回结果:// 一个 System.IO.FileInfo 对象,该对象封装有关 destFileName 参数所描述的文件的信息。//// 异常:// T:System.ArgumentException:// destFileName 参数描述的路径格式不合法。 - 或 - destBackupFileName 参数描述的路径格式不合法。//// T:System.ArgumentNullException:// destFileName 参数为 null。//// T:System.IO.FileNotFoundException:// 找不到当前 System.IO.FileInfo 对象描述的文件。 - 或 - 找不到 destinationFileName 参数描述的文件。//// T:System.PlatformNotSupportedException:// 当前操作系统不是 Microsoft Windows NT 或更高版本。[ComVisible(false)]public FileInfo Replace(string destinationFileName, string destinationBackupFileName, bool ignoreMetadataErrors);//// 摘要:// 将 System.Security.AccessControl.FileSecurity 对象所描述的访问控制列表 (ACL) 项应用于当前 System.IO.FileInfo// 对象所描述的文件。//// 参数:// fileSecurity:// 一个 System.Security.AccessControl.FileSecurity 对象,该对象描述要应用于当前文件的访问控制列表 (ACL) 项。//// 异常:// T:System.ArgumentNullException:// fileSecurity 参数为 null。//// T:System.SystemException:// 未能找到或修改该文件。//// T:System.UnauthorizedAccessException:// 当前进程不具有打开该文件的权限。//// T:System.PlatformNotSupportedException:// 当前操作系统不是 Microsoft Windows 2000 或更高版本。public void SetAccessControl(FileSecurity fileSecurity);//// 摘要:// 以字符串形式返回路径。//// 返回结果:// 一个表示该路径的字符串。public override string ToString();}
}
应用示例
1、读取文件内容
根据指定的文件路径,读取文件内容。
string path = @"E:\TestData\t\1.txt";
FileInfo fi1 = new FileInfo(path);
using (StreamReader sr = fi1.OpenText())
{string s = "";while ((s = sr.ReadLine()) != null){Console.WriteLine(s);}
}
2、创建文件并写入文本
根据指定的文件路径,创建文件,并写文件写入文本数据。
string path = @"E:\TestData\t\" + DateTime.Now.ToString("yyyyMMddyymmss") + ".txt";
FileInfo fi1 = new FileInfo(path);// 创建文件,并向文件写入文本数据
using (StreamWriter sw = fi1.CreateText())
{sw.WriteLine("Hello world.");sw.WriteLine("Welcome to FileInfo.");
}// 打开文件,读取文件文本
using (StreamReader sr = fi1.OpenText())
{string s = "";while ((s = sr.ReadLine()) != null){Console.WriteLine(s);}
}
3、读取被占用的文件
如下图所示,一个excel文件打开了,如果我们要用FileInfo打开它就会报错。
可以用public FileStream Open(FileMode mode, FileAccess access, FileShare share),它的第3个参数 FileShare 就是指定FileStream访问权限。
using System.Runtime.InteropServices;namespace System.IO
{//// 摘要:// 包含用于控制的访问其他类型的常数 System.IO.FileStream 对象可以具有相同的文件。[ComVisible(true)][Flags]public enum FileShare{//// 摘要:// 拒绝共享当前文件。 在关闭文件之前,任何请求打开的文件 (此进程或另一个进程) 将失败。None = 0,//// 摘要:// 允许以后打开文件进行读取。 如果未指定此标志,任何请求打开文件进行读取 (通过这一过程或另一个进程) 无法关闭文件之前。 但是,即使指定了此标志,其他权限可能仍然需要访问该文件。Read = 1,//// 摘要:// 允许以后打开文件进行写入。 如果未指定此标志,任何请求打开文件进行写入 (通过这一过程或另一个进程) 无法关闭文件之前。 但是,即使指定了此标志,其他权限可能仍然需要访问该文件。Write = 2,//// 摘要:// 允许以后打开的文件进行读取或写入。 如果未指定此标志,任何请求打开文件进行读取或写入 (通过这一过程或另一个进程) 将失败,在关闭文件之前。 但是,即使指定了此标志,其他权限可能仍然需要访问该文件。ReadWrite = 3,//// 摘要:// 允许以后删除文件。Delete = 4,//// 摘要:// 使文件句柄由子进程继承。 这是不直接支持 Win32。Inheritable = 16}
}
FileStream fsRead = fi1.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite) 这样就可以打开文件了,读取文件内容了
string path = @"E:\TestData\t\e1.xlsx";
FileInfo fi1 = new FileInfo(path);
using (FileStream fsRead = fi1.Open(FileMode.Open,FileAccess.Read, FileShare.ReadWrite))
{StreamReader sr = new StreamReader(fsRead, System.Text.Encoding.Default);var s = "";while ((s = sr.ReadLine()) != null){Console.WriteLine(s);}
}
其实呢,也可以先通过CopyTo()方法复制一份文件,再读取文件内容。。。。。。。
string path = @"E:\TestData\t\e1.xlsx";FileInfo fi1 = new FileInfo(path);string path2 = @"E:\TestData\t\" + DateTime.Now.ToString("yyyyMMddyymmss") + ".txt";fi1.CopyTo(path2);FileInfo fi2 = new FileInfo(path2);using (StreamReader sr = fi2.OpenText()){var s = "";while ((s = sr.ReadLine()) != null){Console.WriteLine(s);}}
4、文件创建时间、更新时间
需要拿文件更新的内容更新数据库信息的时候,可以根据文件的最后更新时间判断最近是否有修改文件内容,然后再做进一步的操作。
string path = @"E:\TestData\t\e1.xlsx";FileInfo fi1 = new FileInfo(path);Console.WriteLine("CreationTime: " + fi1.CreationTime);Console.WriteLine("LastWriteTime: " + fi1.LastWriteTime);Console.WriteLine("LastAccessTime: " + fi1.LastAccessTime);
C# FileInfo(System.IO)相关推荐
- C ++基础 | 格式化输出,文件输入输出(File IO),头文件(Header Files)_3
目录 格式化输出 文件输入输出(File IO) 头文件(Header Files) 格式化输出 要格式化数据,我们可以使用转义字符串(Escape Sequence)也称字符实体(Character ...
- (17)FPGA面试技能提升篇(System Verilog)
1.1 FPGA面试技能提升篇17(System Verilog) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试技能提升篇17(System Verilo ...
- Unix系统编程():分散输入和集中输出(Scatter-Gather IO):readv和writev
分散输入和集中输出(Scatter-Gather IO):readv和writev 请问这个v又代表什么? readv和writev系统调用分别实现了分散输入和集中输出的功能. #include< ...
- linux内存管理之 ION 内存管理器浅析Ⅰ(system heap)
目录 1 什么是ION 2 ION中不同 type 的 heap 3 ION分配(以system heap为例) 3.1 ion_alloc() 3.2 ion_system_heap_allocat ...
- .Net IIS 内存溢出(System.OutOfMemoryException)
.Net IIS 内存溢出(System.OutOfMemoryException)的常见情况和处理方式总结 原因是页面上数据量大,缓存太多. 解决的三种方法:1)修改代码,降低缓存数据: 2)设置i ...
- OSX下代码打开系统首选项(system preferences)
OSX下代码打开系统首选项(system preferences) 我们开发的App通常会有个设置选项的功能.一般连网的App,产品都会要求在设置选项中加一个打开系统首选项(system prefer ...
- 第2章 系统信息(System Information)
小区搜索过程之后,UE已经与小区取得下行同步,得到小区的PCI(Physical Cell ID)以及检测到系统帧的timing(即10ms timing).接着,UE需要获取到小区的系统信息(Sys ...
- 【5G RRC】小区搜索(Cell Search)和系统捕获(System Acquisition)流程
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发. 在5G早期负责终端数据业务层.核心网相关的开发工作,目前牵头6G ...
- # 2021-01-11 #「GNOME」- 启用系统托盘图标(System Tray)
问题描述 在 GNOME 3.16 中,系统托盘被隐藏到桌面左下角.当鼠标移动到那里时将自动显示,当鼠标移走后将自动隐藏. 在 GNOME 3.26 中,系统托盘图标被彻底隐藏.这就不是很方便,我们需 ...
最新文章
- c++的:: . :-的区别
- 男孩子学计算机和学医哪个好,你认为学医好还是读211大学的电子信息好?
- 回答跨专业考研者的几点疑问(计算机考研)
- [转载] js 读取和输出txt文件
- C语言高级编程:如何确定一个变量是有符号还是无符号数
- 牛客题霸 [ 求路径] C++题解/答案
- 利用colab训练YOLOv5
- 快手直播伴侣因计算机丢失,在电脑上安装快手直播伴侣,却说因为计算机丢失MSVCP140.DOLL怎么办???...
- 工程项目成本费用明细表_建设工程项目成本明细表模板.xls
- 单片机仿真软件Proteus Pro 8.9版本License过期
- 多功能科学计算机.,科学计算器多功能版
- 【机器学习】在生产环境使用Kafka构建和部署大规模机器学习
- whois php,域名whois php
- 【重识云原生】第六章容器基础6.4.10.2节——StatefulSet常规操作实操
- 算法笔记 —— 汉诺塔详解
- 交换机ftp将文件传到服务器,如何用FTP实现交换机间配置文件复制?
- IE8兼容性问题及解决方案
- 头歌--Java入门 - 分支结构
- JSon解析之JSonKit
- 戴尔微型计算机电池位置,转:戴尔笔记本电池拆解教程-看看电池内部的样子
热门文章
- 握手定理(握手数之和为偶数)和相关2个推论
- 计算机应用研究是什么期刊,发表一篇计算机应用研究期刊论文要多久?
- 解决IE系列浏览器上传页面接收问题
- 天龙固件U盘更新_2020年的无线音响好用不?用HEOS体验天龙HOME250
- 单片机温度控制器c语言代码,51单片机两路温度控制器设计方案
- XTU—OJ 1258矩阵
- CP.12图、网络、关联矩阵
- Codeforces 14E Camels (DP)
- 【容斥原理】【推导】【树状数组】Gym - 101485G - Guessing Camels
- 微耕门禁显示通信不上服务器,微耕中性门禁控制器通讯不上是怎么回事?主要有什么注意事项...