您的位置:首页技术开发ASP教程 → ASP 3.0高级编程(二十二)

ASP 3.0高级编程(二十二)

时间:2004/11/7 4:13:00来源:本站整理作者:蓝点我要评论(0)

5.5.1 创建TextStream对象的方法

       有三个常用方法用于创建或打开一个文本文件并返回TextStram对象,如表5-13所示:

表5-13  创建TextStream对象的方法及说明

方 法

说 明



CreateTextFile

(filename,overwrite,unicode)

在磁盘上用指定的文件名filename创建一个新文本文件,并返回一个与该文件对应的TextStream对象。如果可选的overwrite参数设置为True,将覆盖具有同样路径的同名文件。缺省的overwrite是False。如果可选的unicode参数设置为False,该文件的内容将存储为Unicode格式。缺省的unicode是False



OpenTextFile

(filename,iomode,create,format)

打开或创建(如果不存在)一个名为filename的文件,并且返回与该文件对应的TextStream对象。filename参数可以包含绝对或相对路径。iomode参数说明需要的访问类型。容许值是ForReading(1)(缺省)、ForWriting(2)、ForAppending(8)。写入或追加到一个不存在的文件时,如果create参数设置为True,将创建一个新文件。缺省的create是False。format参数说明了读或写文件时的数据格式。容许值是TristateFalse(0)(缺省),说明用ASCII数据格式;TristateTrue(-1)说明用Unicode数据格式;TristateUseDefault(-2)说明数据使用系统缺省的格式



OpenAsTextStream

(iomode,format)

打开一个指定的文件并且返回一个TextStream对象,可用于对该文件的读、写或追加。iomode参数说明了需要的访问类型。容许值是ForReading(1)(缺省)、ForWriting(2)、ForAppending(8)。Format参数说明了读写文件的数据格式。容许值是TristateFalse(0)(缺省),说明用ASCII数据格式;TristateTrue(-1)说明用Unicode数据格式;TristateUseDefault(-2)说明使用系统缺省的格式



       上面列出的方法在FileSystemObject、Folder和File对象中的实现有所不同。如表5-14所示:

表5-14  三个对象中包含的方法

方 法

FileSystemObject对象

Folder对象

File对象



CreateTextFile









OpenTextFile









OpenAsTextStream









       因此,可以使用这些方法创建一个新的文本文件,或者打开一个已存在的文件。则可得到与该文件相应的一个TextStream对象,可以使用TextStream对象的属性和方法操作文件。

1.  创建新的文本文件

可以用CreateTextFile方法创建新的文本文件,或覆盖一个已存在的文件。返回的TextStream对象可用来读写文件。

首先创建一个FileSystemObject对象,用来创建TextStream对象。下面这个例子是用VBScript创建一个“普通的”(即非Unicode)名为MyFile.txt的文件,并覆盖已存在的同名文件:

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

Set objTStream = objFSO.CreateTextFile("C:\TextFiles\MyFile.txt", True, False)

这同样可用JScript实现:

var objFSO = Server.CreateObject('Scripting.FileSystemObject');

var objTStream = objFSO.CreateTextFile('C:\TextFiles\MyFile.txt', true, false);

一旦创建了该文件,就可以使用objTStream(它是对一个TextStream对象的引用)对文件进行操作。

2.  打开已存在的文本文件

OpenTextFile方法用于打开一个已有的文本文件。它返回一个TextStream对象,可用这个对象对文件读或追加数据。

同样,首先创建一个FileSystemObject对象,然后用其创建一个TextStream对象。下面的VBScript程序例子打开一个名为MyFile.txt的文件,准备读出其内容:

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

Set objTStream = objFSO.OpenTextFile("C:\TextFiles\MyFile.txt", ForReading)

用JScript:

var objFSO = Server.CreateObject('Scripting.FileSystemObject');

var objTStream = objFSO.OpenTextFile('C:\TextFiles\MyFile.txt', ForReading);

为了写入一个文件或创建一个不存在的文件,可以用以下代码:

' In VBScript:

Set objTStream = objFSO.OpenTextFile("C:\TextFiles\MyFile.txt", ForWriting, True)



// In JScript:

var objTStream = objFSO.OpenTextFile('C:\TextFiles\MyFile.txt', ForWriting, true);

如果要打开一个已有的Unicode文件,准备对其追加数据,但是不创建不存在的文件,可以用:

' In VBScript:

Set objTStream = objFSO.OpenTextFile("C:\TextFiles\MyFile.txt", ForReading, _

                                                                      False, TristateTrue)

// In JScript:

var objTStream = objFSO.OpenTextFile('C:\TextFiles\MyFile.txt', ForReading, _

fasle, TristateTrue);

3.  作为一个TextStream对象打开一个File对象

可用File对象的OpenAsTextStream方法打开与该对象相应的文件,并且返回一个能对该文件进行读、写和追加的TextStream对象。所以,给定一个File对象(这种情况下不是FileSystemObject对象)——objFileObject,可作为一个“普通的”(非Unicode)TextStream对象打开它,以供追加文件内容:

' In VBScript:

Set objTStream = objFileObject.OpenAsTextStream(ForAppending, False)



// In JScript:

var objTStream = objFileObject.OpenTextFile(ForAppending, false);

注意,使用这种方法不需要文件名,因为程序的执行通过引用File对象进行,并且没有create参数,因为该文件必须已存在,如果想从一个新的空的文件开始,可以用:

' In VBScript:

Set objTStream = objFileObject.OpenAsTextStream(ForWriting)



// In JScript:

var objTStream = objFileObject.OpenTextFile(ForWriting);

如果想读取该文件:

' In VBScript:

Set objTStream = objFileObject.OpenAsTextStream(ForReading)



// In JScript:

var objTStream = objFileObject.OpenTextFile(ForReading);



5.5.2 TextStream对象成员概要

       表5-15和表5-16是TextStream对象的全部属性和方法的列表。下面将简短介绍各个重要的成员的细节。

1.  TextStream对象的属性

TextStream的属性提供有关文件内文件指针当前位置的信息,如表5-15所示。注意,所有的属性是只读的。

表5-15  TextStream对象的属性及说明

属 性

说 明



AtEndOfLine

如果文件位置指针在文件中一行的末尾则返回True



AtEndOfStream

如果文件位置指针在文件的末尾则返回True



Column

从1开始返回文件中当前字符的列号



Line

从1开始返回文件中当前行的行号



       AtEndOfLine和AtEndOfStream属性仅对以iomode参数为ForReading的方式打开的文件可用,否则将会出错。

2.  TextStream对象的方法

TextStream对象的方法如表5-16所示:

表5-16  TextStream对象的方法及说明

方 法

说 明



Close()

关闭一个打开的文件



Read(numchars)

从文件中读出numchars个字符



ReadAll()

作为单个字符串读出整个文件



ReadLine()

作为一个字符串从文件中读出一行(直到回车符和换行)



Skip(numchars)

当从文件读出时忽略numchars个字符



SkipLine()

当从文件读出时忽略下一行



Write(string)

向文件写入字符串string



WriteLine(string)

向文件写入字符串string(可选)和换行符



WriteBlankLines(n)

向文件写入n个换行符



3.  写文本文件

一旦使用CreateTextFile、OpenTextFile或OpenAsTextStream方法以及ForWriting或ForAppending参数,创建一个对应于某个文件的TextStream对象,可以用下面的VBScript程序写文件和关闭文件:

' In VBScript:

objTStream.WriteLine "At last I can create files with VBScript!"

objTStream.WriteLine

objTStream.WriteLine "Here are three blank lines:"

objTStream.WriteBlankLines 3

objTStream.Write "... and this is "

objTStream.WriteLine "the last line."

objTStream.Close

或者用JScript:

// In JScript:

objTStream.WriteLine('At last I can create files with JScript! ');

objTStream.WriteLine();

objTStream.WriteLine('Here are three blank lines: ');

objTStream.WriteBlankLines(3);

objTStream.Write('... and this is ');

objTStream.WriteLine('the last line. ');

objTStream.Close();

4.  读文本文件

一旦使用CreateTextFile、OpenTextFile或OpenAsTextStream方法以及ForReading参数,创建一个对应于某个文件的TextStream对象,可以用下面的VBScript程序读文件和关闭文件:

' In VBScript:

'read one line at a time until the end of the file is reached

Do While Not objTStream.AtEndOfStream

   'get the line number

   intLineNum = objTStream.Line

   'format it as a 4-character string with leading zeros

   strLineNum = Right("000" & CStr(intLineNum), 4)

   'get the text of the line from the file

   strLineText = objTStream.ReadLine

   Response.Write strLineNum & ": " & strLineText & "
"

Loop

objTStream.Close

或用JScript:

// In JScript:

// read one line at a time until the end of the file is reached

while (! objTStream.AtEndOfStream) {

   // get the line number

   intLineNum = objTStream.Line;

   // format and convert to a string

   strLineNum = '000' + intLineNum.toString();

   strLineNum = substr(strLineNum, strLineNum.length – 4, 4)

   // get the text of the line from the file

   strLineText = objTStream.ReadLine();

   Response.Write(strLineNum + ': ' + strLineText + '
');

}

objTStream.Close();



5.5.3 TextStream对象举例

       为了了解使用TextStream对象操作磨灭文件的几种方式,本书提供了一个VBScript示例页面,该页使用了大量的上述的代码。从示例的Chapter05主菜单页,选择链接“Working With the TextStream Object”打开show_textstream.asp页面。

       该页显示了存储在磁盘上名为MyFile.txt的文件的文本内容。在



由上面程序可知道如何打开文本文件进行读取,遍历整个文件每次读取一行(而不是作为一个字符串读出整个文件)。这是因为要添加自己的行号,行号不属于该文件的文本。对从该文件读出的每行(读之前),检索并且格式化Line属性并创建一个三位数字的行号。然后把行编号和文本行放置页面的标记,以防止增加一个额外的回车符号。即使用:

%>



而不使用:

%>



3.  向文本文件追加内容

当点击Append按钮时,可对已有的文件追加内容,与修改该文件内容类似,如图5-16所示。区别是打开该文件是为了追加而不是为了改写文件。调用OpenTextFile方法时可增加额外参数,防止在指定的文件2不存在时创建新文件。



If Len(Request.Form("cmdAppend")) Then

  'append contents of TEXTAREA to file

  strNewText = Request.Form("txtContent")

  arrLines = Split(strNewText, vbCrLf)

  Set objTStream = objFSO.OpenTextFile(strTextFile, ForAppending, False)

  For intLine = 0 To UBound(arrLines)

    strThisLine = arrLines(intLine)

    If Len(strThisLine) > 4 Then objTStream.WriteLine Mid(strThisLine, 6)

  Next

  objTStream.Close

End If





图5-16  向文本文件追加内容时的示例页面

4.    重写缺省内容

最后,Restore按钮用来将初始缺省内容简单地重写回文本文件。代码与用TextStream的方法写一个文本文件类似:



If Len(Request.Form("cmdDefault")) Then

  'write out default contents to file

  Set objTStream = objFSO.CreateTextFile(strTextFile, True, False)

  objTStream.WriteLine "At last I can create files with VBScript!"

  objTStream.WriteLine

  objTStream.WriteLine "Here are three blank lines:"

  objTStream.WriteBlankLines 3

  objTStream.Write "... and this is "

  objTStream.WriteLine "the last line."

  objTStream.Close

End If



5.6 小结

       本章讲述了在ASP页面中使用对象和组件的强大能力。首先讨论对象和组件的一般特性,以及它们的类型。然后集中论述了如何在ASP(及客户端)脚本代码内创建对象实例。

       在页面上使用的许多对象可能都是“外部”组件,这些组件安装在服务器上,独立于ASP。本章所讨论的对象,当ASP使用一种缺省的脚本语言(如VBScript或JScript)时,总是可用的。其实现是通过scrrun.dll文件里的脚本运行期库完成的。

       这些对象是指Dictonary对象、FileSystemObject对象和TextStream对象。

       Dictionary对象为我们提供了存储值的一种有效方式,可根据名字进行索引和访问,而不是根据一个数字进行访问。这是存储名字/值对这样的数据的理想方式。

       FileSystemObject对象和TextStream对象相互之间联系密切,可使用它们访问服务器或网络(映射)的磁盘驱动器的目录。FileSystemObject对象提供对驱动器、文件夹(目录)和文件的存取,并提供了用于对于获得更多的信息或移动、复制、删除它们的属性及方法。

       可以创建对应于系统内的任何文件的TextStream对象,并通过该对象对文件进行读取和写入。对于读写过程它作为文本文件操作,甚至可以处理Unicode格式的文件。对文件系统的导航和读写能力的结合允许对服务器文件系统进行极其复杂的控制。还可以在客户端脚本代码中使用对象(有一定限制)。






相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 《龙珠:超宇宙》 战斗E3 2014:瘆人僵尸《消 asp代码实现access数据导出到excel文件如何使用FSO读取Js文件内容并可以编辑修改对初学者有用的一些asp函数集学习ASP编程必会的代码

人气排行 asp代码实现access数据导出到excel文件asp不需要任何配置的伪静态实现如何使用FSO读取Js文件内容并可以编辑修改asp去除html标记和空格的代码Asp全选删除代码教大家网页伪静态知识及其2种实现方法Microsoft SQL Server 7.0安装问题(一)ASP.NET中的Code Behind技术4