对文件进行处理

这个部分是介绍怎样进行文件处理的：拷贝，移动以及删除文件；以及怎样检测一个文件是否存在和接收一个文件的有关属性。

拷贝、移动以及删除文件

有不止一种方法来对文件进行拷贝、移动以及删除工作。你可以利用FileSystemObject对象的方法或者File对象的方法，其中FileSystemObject对象的方法更具有些变通性，因为你会不局限于一个单独的文件上。

下面是FileSystemObject对象对文件操作的一些方法：

■CopyFile source, destination,[Overwrite]。这个方法将文件进行复制，你可以使用 source参数统配符来在一个时刻进行多个文件的复制。OverWrite参数将在目的文件已经存在的情况下进行覆盖操作。

■MoveFile source, destination.这个方法对文件进行移动操作，同样你可以使用统配 符来移动多个文件，不过如果目的文件已经存在，则会报错而不允许覆盖。

■DeleteFile FileSpecifier。这个方法删除指定文件，同样还是可以利用统配符来进 行多文件的删除。如果没有符合统配符的文件，将会报错。

在你使用这些方法之前，首先当然还是创建一个FileSystemObject对象的事例。下面就是一个完整的使用示例：

<%

‘

创建一个FileSystemObject的事例

Set MyFileObject=Server.CreateObject(

“Scripting.FileSystemObject”)

‘

创建一个要进行操作的文件

Set MyFile=MyFileObject.CreateTextFile(

“c:\test.txt”)

MyFile.WriteLine(

“Hello”)

MyFile.Close

‘

复制文件操作

MyFileObject.CopyFile

“c:\test.txt” “c:\test2.txt”

‘

移动文件操作

MyFileObject.MoveFile

“c:\test.txt” “c:\test3.txt”

‘

删除这些文件

MyFileObject.DeleteFile

“c:\test.txt”

MyFileObject.DeleteFile

“c:\test3.txt”

%>

除了使用FileSystemObject对象的方法来进行这种操作以外，你还可以使用FILE对象。下面是File对象相关操作的同等方法：

■Copy newcopy，[Overwrite]。这种方法给当前文件创建一个拷贝，当可选的 OverWrite参数为TRUE时，如果存在同名的目的文件，则进行覆盖。

■Move newcopy.这个方法用来移动当前文件，同时当前文件跟随到新的名称。

■Delete。删除当前文件。

在你使用这些方法之前，你必须创建File对象的一个事例，这样的事例创建是在FileSystemObject对象中使用GetFile()方法来完成的，下面这个脚本就是利用File对象进行各种操作的一个示例：

<%

‘

创建一个FileSystemObject对象的事例

Set MyFileObject=Server.CreateObject(

“Scripting.FileSystemObject”)

‘

创建一个要进行操作的文件

Set MyFile=MyFileObject.CreateTextFile(

“c:\test.txt”)

MyFile.WriteLine(

“Hello”)

MyFile.Close

‘

创建一个File对象的事例

Set afile=MyFileObject.GetFile(

“c:\test.txt”)

‘

复制文件

Afile.copy

“c:\test2.txt”

‘

移动文件

Afile.Move

“c:\test3.txt”

‘

删除文件

afile.Delete

%>

检测文件是否存在

如果需要了解一个特定的文件是否存在，你需要FileSystemObject对象的FileExists()方法，只需要传递其物理地址就可以从返回值是True和False来判断其是否存在，下面就是这样一个例子：

<HTML>

<HEAD><TITLE>文件是否存在示例</TITLE></HEAD>

<BODY>

<%

MySelf=Request.ServerVariables(

“PATH_TRANSLATED”)

‘

创建一个FileSystemObject对象事例

Set MyFileObject=Server.CreateObject(

“Scripting.FileSystemObject”)

IF MyFileObject.FileExists(

“MySelf”)

Response.write(

“存在这个文件”)

Else

Response.write(

“不存在这个文件”)

END IF

%>

</BODY>

</HTML>

这个脚本就是检查是否存在一个指定的文件，在本例中，显然是存在的，因为MySelf就是当前这个文件（这里面使用了ServerVariables变量PATH_TRANSLATED来获取当前文件的物理地址），当前这个文件无论如何肯定是存在的，因此返回值肯定是TRUE，那么显示为“存在这个文件”。

接受文件属性

当处理文件时，有些属性是需要了解的，下面是File对象的属性列表：

■Attributes.这个属性类似于Dos命令的Attrib，显示当前文件的系统属性。例如Read-Only，Hidden，System等等

■DateCreated.这个属性返回文件创建的时间和日期。

■DateLastAccessed.这个属性返回该文件上一次被使用的日期和时间

■DateLastModified.这个属性返回该文件上一次被修改的日期和时间

■Drive. 这个属性返回值为该文件所在的驱动器

■Name.这个属性返回该文件文件名

■ParentFolder.这个属性返回值为该文件所处的文件夹

■Path.返回该文件的全路径

■Size.返回该文件的字节数

■Type.返回该文件类型，例如Text文本，Asp文件，或者网络资源(HTML)

在使用这些属性之前，依然首先需要创建一个File对象的事例。下一个例子就是显示c:\test.txt的各项属性。

<HTML>

<HEAD><TITLE>迈至科网络ASP教程之文件属性示例</TITLE></HEAD>

<BODY>

<%

‘

创建一个FileSystemObject对象的事例

Set MyFileObject=Server.CreateObject(

“Scripting.FileSystemObject”)

‘

创建一个File对象的事例

Set Myfile=MyFileObject.GetFile(

“c:\test.txt”)

%>

<Br>名称：<%=Myfile.Name %>

<Br>路径：<%=Myfile.Path %>

<Br>驱动器：<%=Myfile.Drive %>

<Br>大小：<%=Myfile.size %>

<Br>类型：<%=Myfile.type %>

<Br>属性：<%=Myfile.Attributes %>

<Br>创建日期：<%=Myfile.DateCreated %>

<Br>上次进入日期：<%=Myfile.LastAccessed %>

<Br>上次修改日期：<%=Myfile.LassModified %>

</BODY>

</HTML>

那么显示结果如图19.2所示。

图19.2 文件属性

Attributes属性需要解释，它的返回值是对应于下表的数字：

Attribute | 值
Normal | 0
Read-Only | 1
Hidden | 2
System | 4
Volume | 8
Directory | 16
Archive | 32
Alias | 64
Compressed | 128

那么，由于这里面属性为Archive和Hidden，所以结合起来就是2(Hidden)+32(Archieve)=34，从数学上可以理解，每一个整数对应这样的2的幂次的累加和肯定是唯一的，这些属性还可以进行设置，例如，使c:\test.txt变成具有Archieve,Read-Only两种属性 ，那么用下面这个脚本

<%

‘

创建一个FileSystemObject对象的事例

Set MyFileObject=Server.CreateObject(

“Scripting.FileSystemObject”)

‘

创建一个File对象的事例

Set Myfile=MyFileObject.GetFile(

“c:\test.txt”)

‘

进行属性设置

MyFile.attributes=31

%>