深入探索文件系统操作:从基础到高级应用
立即解锁
发布时间: 2025-08-17 00:31:33 阅读量: 1 订阅数: 6 

### 深入探索文件系统操作:从基础到高级应用
#### 1. FileInfo类
FileInfo对象代表一个文件,可使用其属性和方法来创建和删除文件。以下是FileInfo类最有用的公共属性和方法:
| 属性或方法 | 用途 |
| --- | --- |
| LastWriteTimeUtc | 获取或设置目录的最后写入时间(UTC) |
| MoveTo | 将目录及其内容移动到新路径 |
| Name | 目录名(不包含路径信息) |
| Parent | 返回一个DirectoryInfo对象,代表目录的父目录。如果目录是文件系统的根目录(如C:\),则返回Nothing |
| Refresh | 刷新DirectoryInfo对象的数据。例如,如果自对象创建后目录已被访问,必须调用Refresh来加载新的LastAccessTime值 |
| Root | 返回一个DirectoryInfo对象,代表目录文件系统的根目录 |
| ToString | 返回目录的完整限定路径和名称 |
| AppendText | 返回一个StreamWriter,用于向文件追加文本 |
| Attributes | 获取或设置文件的标志,来自FileAttributes枚举:Archive、Compressed、Device、Directory、Encrypted、Hidden、Normal、NotContentIndexed、Offline、ReadOnly、ReparsePoint、SparseFile、System和Temporary |
| CopyTo | 复制文件并返回一个FileInfo对象,代表新文件。一个参数可指示是否覆盖现有文件。如果目标路径是相对路径,则相对于应用程序的当前目录,而不是FileInfo对象的目录 |
| Create | 创建文件并返回一个与之关联的FileStream对象。例如,可以创建一个FileInfo对象,将不存在的文件名传递给其构造函数,然后调用Create方法来创建文件 |
| CreateText | 创建文件并返回一个与之关联的StreamWriter。例如,可以创建一个FileInfo对象,将不存在的文件名传递给其构造函数,然后调用CreateText方法来创建文件 |
| CreationTime | 获取或设置文件的创建时间 |
| CreationTimeUtc | 获取或设置文件的创建时间(UTC) |
| Delete | 删除文件 |
| Directory | 返回一个DirectoryInfo对象,代表文件所在的目录 |
| DirectoryName | 返回文件所在目录的名称 |
| Exists | 如果文件存在,则返回True |
| Extension | 返回文件名的扩展名(包括句点)。例如,game.txt的扩展名是.txt |
| FullName | 返回文件的完整限定路径和名称 |
| IsReadOnly | 如果文件被标记为只读,则返回True |
| LastAccessTime | 获取或设置文件的最后访问时间 |
| LastAccessTimeUtc | 获取或设置文件的最后访问时间(UTC) |
| LastWriteTime | 获取或设置文件的最后写入时间 |
| LastWriteTimeUtc | 获取或设置文件的最后写入时间(UTC) |
| Length | 返回文件中的字节数 |
| MoveTo | 将文件移动到新位置。如果目标使用相对路径,则相对于应用程序的当前目录,而不是FileInfo对象的目录。此方法完成后,FileInfo对象将更新以引用文件的新位置 |
| Name | 文件名(不包含路径信息) |
| Open | 以各种模式(Append、Create、CreateNew、Open、OpenOrCreate或Truncate)、访问权限(Read、Write或ReadWrite)和共享设置(Read、Write、ReadWrite或None)打开文件。此方法返回一个与文件关联的FileStream对象 |
| OpenRead | 返回一个只读的FileStream,与文件关联 |
| OpenText | 返回一个使用UTF - 8编码的StreamReader,用于读取文件 |
| OpenWrite | 返回一个只写的FileStream,与文件关联 |
| Replace | 用此文件替换目标文件,将旧目标文件重命名为备份副本。如果备份文件已存在,则将其删除并替换为目标文件 |
| ToString | 返回文件的完整限定名称 |
#### 2. FileSystemWatcher类
FileSystemWatcher类可监视文件系统的一部分,并在发生更改时引发事件,让程序知晓。例如,可以让FileSystemWatcher监视工作目录。当带有.job扩展名的新文件到达时,监视程序会引发事件,应用程序可以处理该文件。
FileSystemWatcher类的构造函数接受参数,指定要监视的目录和用于选择要监视文件的过滤器。例如,过滤器可以是“*.txt”,用于监视文本文件的更改。默认过滤器是“*.*”,可捕获所有有扩展名的文件的更改。将过滤器设置为空字符串“”,可捕获所有文件(包括无扩展名的文件)的更改。
以下是FileSystemWatcher类最有用的属性:
| 属性 | 用途 |
| --- | --- |
| EnableRaisingEvents | 确定组件是否启用。注意,此属性默认值为False,因此在将其设置为True之前,监视程序不会引发任何事件 |
| Filter | 确定监视程序报告事件的文件。不能同时监视多种文件类型,如*.txt和*.dat。应使用多个FileSystemWatcher对象。如果需要,可以使用AddHandler使所有FileSystemWatcher类使用相同的事件处理程序 |
| IncludeSubdirectories | 确定对象是否监视主路径内的子目录 |
| InternalBufferSize | 确定内部缓冲区的大小。如果监视程序监视的是非常活跃的目录,小缓冲区可能会溢出 |
| NotifyFilter | 确定监视程序报告的更改类型。这是NotifyFilters枚举定义的值的组合,可包括Attributes、CreationTime、DirectoryName、FileName、LastAccess、LastWrite、Security和Size |
| Path | 确定要监视的路径 |
FileSystemWatcher类提供了两个非常有用的方法:
- Dispose:释放组件使用的资源。使用完监视程序后,调用其Dispose方法,以便垃圾回收更有效地回收其资源。
- WaitForChanged:同步等待更改(可选超时)。当发生更改时,该方法返回一个WaitForChangedResult对象,提供有关发生的更改的信息。
当FileSystemWatcher异步检测到更改时,会引发事件让程序知道发生了什么。以下是该类的事件:
| 事件名称 | 描述 |
| --- | --- |
| Changed | 文件或子目录已更改 |
| Created | 文件或子目录已创建 |
| Deleted | 文件或子目录已删除 |
| Error | 监视程序的内部缓冲区溢出 |
| Renamed | 文件或子目录已重命名 |
以下是一个简单的示例,展示如何使用FileSystemWatcher在目录中查找新文件:
```vb
Private WithEvents JobFileWatcher As FileSystemWatcher
Private Sub Form1_Load() Handles MyBase.Load
Dim watch_path As String =
FileSystem.GetParentPath(Application.StartupPath)
JobFileWatcher = New FileSystemWatcher(watch_path, "*.job")
JobFileWatcher.NotifyFilter = NotifyFilters.FileName
JobFileWatcher.EnableRaisingEvents = True
End Sub
Private Sub JobFileWatcher_Created(send
```
0
0
复制全文
相关推荐









