文件操作

对文件进行处理

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

拷贝、移动以及删除文件
有不止一种方法来对文件进行拷贝、移动以及删除工作。你可以利用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>

四、操作文件夹(Folders)
涉及到文件夹的操作包括创建、移动、删除以及获取相关属性。
Folder对象操作例程 :
下面的例程将练习获取父文件夹名称、创建文件夹、删除文件夹、判断是否为根目录等操作:
var fso, fldr, s = "";
// 创建FileSystemObject对象实例
fso = new ActiveXObject("Scripting.FileSystemObject");
// 获取Drive 对象
fldr = fso.GetFolder("c://");
// 显示父目录名称
alert("Parent folder name is: " + fldr + "/n");
// 显示所在drive名称
alert("Contained on drive " + fldr.Drive + "/n");
// 判断是否为根目录
if (fldr.IsRootFolder)
alert("This is the root folder.");
else
alert("This folder isn't a root folder.");
alert("/n/n");
// 创建新文件夹
fso.CreateFolder ("C://Bogus");
alert("Created folder C://Bogus" + "/n");
// 显示文件夹基础名称,不包含路径名
alert("Basename = " + fso.GetBaseName("c://bogus") + "/n");
// 删除创建的文件夹
fso.DeleteFolder ("C://Bogus");
alert("Deleted folder C://Bogus" + "/n");
五、操作文件(Files)
对文件进行的操作要比以上介绍的驱动器(Drive)和文件夹(Folder)操作复杂些,基本上分为以下两个类别:对文件的创建、拷贝、移动、删除操作和对文件内容的创建、添加、删除和读取操作。下面分别详细介绍。
(一)创建文件
一共有3种方法可用于创建一个空文本文件,这种文件有时候也叫做文本流(text stream)。
第一种是使用CreateTextFile方法。代码如下:
var fso, f1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c://testfile.txt", true);
第二种是使用OpenTextFile方法,并添加上ForWriting属性,ForWriting的值为2。代码如下:
var fso, ts;
var ForWriting= 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
ts = fso.OpenTextFile("c://test.txt", ForWriting, true);
第三种是使用OpenAsTextStream方法,同样要设置好ForWriting属性。代码如下:
var fso, f1, ts;
var ForWriting = 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CreateTextFile ("c://test1.txt");
f1 = fso.GetFile("c://test1.txt");
ts = f1.OpenAsTextStream(ForWriting, true);
(二)添加数据到文件
当文件被创建后,一般要按照“打开文件->填写数据->关闭文件”的步骤实现添加数据到文件的目的。
打开文件可使用FileSystemObject对象的OpenTextFile方法,或者使用File对象的OpenAsTextStream方法。
填写数据要使用到TextStream对象的Write、WriteLine或者WriteBlankLines方法。在同是实现写入数据的功能下,这3者的区别在于:Write方法不在写入数据末尾添加新换行符,WriteLine方法要在最后添加一个新换行符,而WriteBlankLines则增加一个或者多个空行。
关闭文件可使用TextStream对象的Close方法。
(三)创建文件及添加数据例程
下面的代码将创建文件、添加数据、关闭文件几个步骤结合起来进行应用:
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
// 创建新文件
tf = fso.CreateTextFile("c://testfile.txt", true);
// 填写数据,并增加换行符
tf.WriteLine("Testing 1, 2, 3.") ;
// 增加3个空行
tf.WriteBlankLines(3) ;
// 填写一行,不带换行符
tf.Write ("This is a test.");
// 关闭文件
tf.Close();
(四)读取文件内容
从文本文件中读取数据要使用TextStream对象的Read、ReadLine或ReadAll 方法。Read方法用于读取文件中指定数量的字符;ReadLine方法读取一整行,但不包括换行符;ReadAll方法则读取文本文件的整个内容。读取的内容存放于字符串变量中,用于显示、分析。在使用Read或ReadLine方法读取文件内容时,如果要跳过一些部分,就要用到Skip或SkipLine方法。
下面的代码演示打开文件、填写数据,然后读取数据:
var fso, f1, ts, s;
var ForReading = 1;
fso = new ActiveXObject("Scripting.FileSystemObject");
// 创建文件
f1 = fso.CreateTextFile("c://testfile.txt", true);
// 填写一行数据
f1.WriteLine("Hello World");
f1.WriteBlankLines(1);
// 关闭文件
f1.Close();
// 打开文件
ts = fso.OpenTextFile("c://testfile.txt", ForReading);
// 读取文件一行内容到字符串
s = ts.ReadLine();
// 显示字符串信息
alert("File contents = '" + s + "'");
// 关闭文件
ts.Close();
(五)移动、拷贝和删除文件
对于以上三种文件操作,Javascript各有两种对应的方法:File.Move 或 FileSystemObject.MoveFile用于移动文件;File.Copy 或 FileSystemObject.CopyFile用于拷贝文件;File.Delete 或 FileSystemObject.DeleteFile用于删除文件。
下面的代码演示在驱动器C的根目录下创建一个文本文件,填写一些内容,然后将文件移动到/tmp目录下,再在目录/temp下面建立一个文件拷贝,最后删除这两个目录的文件:
var fso, f1, f2, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c://testfile.txt", true);
// 写一行
f1.Write("This is a test.");
// 关闭文件
f1.Close();
// 获取C:/根目录下的文件句柄
f2 = fso.GetFile("c://testfile.txt");
// 移动文件到/tmp目录下
f2.Move ("c://tmp//testfile.txt");
// 拷贝文件到/temp目录下
f2.Copy ("c://temp//testfile.txt");
// 获取文件句柄
f2 = fso.GetFile("c://tmp//testfile.txt");
f3 = fso.GetFile("c://temp//testfile.txt");
// 删除文件
f2.Delete();
f3.Delete();
六、结 语
通过以上对FileSystemObject的各种对象、属性和方法的介绍和示例,相信你已经对如何使用JavaScript语言在页面中操作驱动器、文件和文件夹有了清晰的认识。但是上述提及的例程都非常简单,要全面、灵活地掌握JavaScript文件操作技术,还需要大量的实践练习。而且还有一点提醒大家,由于涉及到在浏览器中进行文件读写这样的高级操作,对于默认的浏览器安全级别而言,在代码运行前都会有一个信息提示,这点请在实际环境中提示访问者注意。 
_________________________________________________________________________________________________

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值