NETCF开发之文件与目录(8)

来源:互联网 发布:淘宝双十一预售发货 编辑:程序博客网 时间:2024/05/16 16:10

1.1    文件管理

Pocket PC应用程序通常会包含文件管理的功能。例如访问文本配置文件、XML文档或数据库以及拷贝、移动、删除和使用文件属性。下面就介绍如何在Pocket PC 环境里利用System.IO 命名空间的File类来实现文件管理

1.1.1    File类和FileInfo

DirectoryDirectoryInfo类类似,System.IO命名空间包括FileFileInfo两个类。这两个类之间的差别是File类提供静态方法,而FileInfo类提供实例方法。相比之下,File类的功能更强大更方便。表11-6列出在Pocket PC应用程序开发中常用的File类方法。

 

11-6File类用于管理文件的方法

方法

描述

Copy

拷贝指定文件。

Delete

删除指定文件。

Exists

检查指定文件是否存在。

Move

移动指定文件到新的目录。

1.1.2    检查文件是否存在

System.IO命名空间的 File类提供一个Exists方法。顾名思义,该方法用于判断指定的文件是否存在。该方法的声明语法如下:

 

Public Shared Function Exists(ByVal path As String) As Boolean

 

Exists方法返回一个布尔值。如果文件存在,返回True,否则返回False。以下代码演示调用FileExists方法。

 

MsgBox(System.IO.File.Exists("/Program Files/My Directory/working.tmp"))

1.1.3    复制文件

使用Copy方法很容易实现文件的复制操作。该方法提供两个重载版本。假设目标文件不存在,第一个重载版本的声明语法如下所示:

 

Overloads Public Shared Sub Copy(ByVal sourceFileName As String, ByVal destFileName As String)

 

Copy方法的第一个重载版本的调用方式如下所示

 

System.IO.File.Copy("/Program Files/My Directory/working.tmp", "/Program Files/My Directory/new.tmp")

 

使用Copy方法的第一个重载版本复制文件,应该使用System.IO.File.Exists方法确认目标文件不存在,否则将抛出一个IOException例外。

File类的第二个重载版本可以指定目标文件如果存在的话,是否覆盖目标文件。声明语法如下所示:

 

Overloads Public Shared Sub Copy(_

   ByVal sourceFileName As String, _

   ByVal destFileName As String, _

   ByVal overwrite As Boolean _

)

 

第三个参数overwrite接收一个布尔值。设置该参数为True,标识覆盖目标文件。调用方式如下所示

 

System.IO.File.Copy("/Program Files/My Directory/working.tmp", "/Program Files/My Directory/new.tmp", True)

1.1.4    移动文件

除了能够复制文件外,还可以移动文件。File类提供一个Move方法。该方法的声明语法如下:

 

Public Shared Sub Move(ByVal sourceFileName As String, ByVal destFileName As String)

 

参数sourceFilename指定源文件的路径,参数desFileName指定目标文件的路径。该方法的调用方式如下所示

 

System.IO.File.Move("/Program Files/My Directory/working.tmp", "/Program Files/Archive/working.tmp")

 

使用Move方法时需要注意,如果目标文件存在,将抛出一个IOException例外。因此在移动文件之前,应该使用System.IO.File.Exists方法确认目标文件不存在。清单11-13演示如何正确的移动文件。

 

清单11-13:移动文件

 

' 声明返回状态结构体

Public Structure ReturnStatus

Dim Success As Boolean

Dim Message As String

End Structure

 

Function MoveFile(ByVal strSource As String, ByVal strTarget As String) As ReturnStatus

Dim MyReturn As ReturnStatus

 

If Not (System.IO.File.Exists(strSource)) Then

MyReturn.Success = False

MyReturn.Message = "源文件不存在"

Return MyReturn

Exit Function

End If

 

If System.IO.File.Exists(strTarget) Then

MyReturn.Success = False

MyReturn.Message = "目标文件已存在"

Return MyReturn

Exit Function

End If

 

Try

System.IO.File.Move(strSource, strTarget)

MyReturn.Success = True

MyReturn.Message = strTarget

Return MyReturn

Catch ex As Exception

MyReturn.Success = False

MyReturn.Message = ex.Message

Return MyReturn

End Try

End Function

1.1.5    删除文件

删除文件可以使用File类的Delete方法来实现,该方法的声明语法如下:

 

Public Shared Sub Delete(ByVal path As String)

 

删除文件时需要指定文件的完整路径。调用方式如下所示

 

System.IO.File.Delete("/Program Files/My Directory/working.tmp")

1.1.6    获取文件属性

通过FileInfo类的Attributes属性可以获得指定文件的当前属性。注意我说地是FileInfo类。在.NET Compact Framework里,File类没有提供这样的方法。

在该属性返回的值里包含存档、隐藏、只读和系统属性标记。以下代码演示如何访问文件属性:

 

Dim myFile As System.IO.FileInfo

 

myFile = New System.IO.FileInfo("/Program Files/My Directory/working.tmp")

MsgBox(myFile.Attributes.ToString)

1.1.7    设置文件属性

使用FileInfo类的Attributes属性可以设置文件属性。设置文件属性的示例代码如清单11-14所示。首先创建一个指定文件的FileInfo类实例,然后,通过该实例给文件增加只读属性。

 

清单11-14:移动文件

……

Dim myFile As System.IO.FileInfo

 

myFile = New System.IO.FileInfo("/Program Files/My Directory/working.tmp")

myFile.Attributes = myFile.Attributes + IO.FileAttributes.ReadOnly

MsgBox(myFile.Attributes.ToString)

……

 
原创粉丝点击