`
zhaohaolin
  • 浏览: 1018264 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ASP 3.0高级编程(二十二)

阅读更多
 来    源: 互联网
 作    者: 不祥
 发表日期: 2005-12-17 16:55:42
 阅读次数: 96
 文章标题:ASP → ASP 3.0高级编程(二十二)
 查看权限: 普通文章
 查看方式: 查看:[ 大字 中字 小字 ] [双击滚屏]
 正    文:
ASP 3.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 & "<BR>"
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 + '<BR>');
}
objTStream.Close();

5.5.3 TextStream对象举例
       为了了解使用TextStream对象操作磨灭文件的几种方式,本书提供了一个VBScript示例页面,该页使用了大量的上述的代码。从示例的Chapter05主菜单页,选择链接“Working With the TextStream Object”打开show_textstream.asp页面。
       该页显示了存储在磁盘上名为MyFile.txt的文件的文本内容。在<TEXTAREA>控件里显示的文本内容允许进行编辑,并且下面有三个按钮。三个按钮的作用分别是用<TEXTAREA>控件的内容更新(即取代)最初的文本,在已有文件内容的后面添加文本,或用初始的缺省内容重写文件,如图5-15所示:

图5-15  TextStream对象示例页面
1.  读取已存在的文本文件的内容
每次载入该页面,将打开文本文件并将读取的内容置入<TEXTAREA>控件。注意我们如何使用Server.MapPath方法得到文件MyFile.txt的绝对物理路径,该文件与示例页面在同一目录下。下面的程序创建FileSystemObject实例:
<%
strTextFile = Server.MapPath("MyFile.txt")

'create an instance of a FileSytemObject object
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

与书中本部分的大多数其他示例一样,该页包含一个<FORM>段以保存该页面的HTML控件。ACTION是当前页面,因此窗体的内容送回到同一页面。
每次载入该页面,<TEXTAREA>控件用文本文件的当前内容填充:

<FORM ACTION="<% = Request.ServerVariables("SCRIPT_NAME") %>" METHOD="POST">

The contents of the disk file <B><% = strTextFile %></B> are:<P>
<TEXTAREA NAME="txtContent" ROWS="10" COLS="50" WRAP="PHYSICAL">
<%
'open the text file as a TextStream object
Set objTStream = objFSO.OpenTextFile(strTextFile, ForReading)
'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 and convert to a string
   strLineNum = Right("00" & CStr(intLineNum), 3)
   'get the text of the line from the file
   strLineText = objTStream.ReadLine
   Response.Write strLineNum & ": " & strLineText & vbCrLf
Loop
objTStream.Close
%>
</TEXTAREA><P>
由上面程序可知道如何打开文本文件进行读取,遍历整个文件每次读取一行(而不是作为一个字符串读出整个文件)。这是因为要添加自己的行号,行号不属于该文件的文本。对从该文件读出的每行(读之前),检索并且格式化Line属性并创建一个三位数字的行号。然后把行编号和文本行放置页面的<TEXTAREA>控件内。
2.  更新文本文件的内容
当点击页面的Update按钮时(一般是在编辑了<TEXTAREA>控件里的文本以后),将把<TEXTAREA>控件里的内容重新写入到该文本文件内。为此,该页有相应的一些ASP代码,在创建HTML控件以前检验Request.Form集合,查看点击的是哪一个按钮(如果有的话),然后就重新载入该页。
如果点击Update按钮,搜集<TEXTAREA>控件的内容作为一个字符串,分离这个字符串使之成为独立文本选择的数组,并且打开文本文件准备重写其内容,然后遍历刚刚创建的数组,按行号循环写入该行的内容:

'look for a command sent from the FORM section buttons
If Len(Request.Form("cmdUpdate")) Then
  'Get contents of TEXTAREA control
  strNewText = Request.Form("txtContent")
  'Split it into an array of lines at each carriage return
  arrLines = Split(strNewText, vbCrLf)
  'Open the text file for writing, which replaces all existing content
  Set objTStream = objFSO.OpenTextFile(strTextFile, ForWriting)
  For intLine = 0 To UBound(arrLines)
    strThisLine = arrLines(intLine)
       'Write out each line in turn as long as it’s got a line number
    If Len(strThisLine) > 4 Then objTStream.WriteLine Mid(strThisLine, 6)
  Next
  objTStream.Close
End If

HTML<TEXTAREA>控件可在返回的Value中增加额外字符,这依赖于原始HTML页内的内容格式和WRAP属性的设置。特别是应在ASP脚本结束定界符“%>”后立即写上</TEXTAREA>标记,以防止增加一个额外的回车符号。即使用:
%></TEXTAREA><p>
而不使用:
%>
</TEXTAREA><P>
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格式的文件。对文件系统的导航和读写能力的结合允许对服务器文件系统进行极其复杂的控制。还可以在客户端脚本代码中使用对象(有一定限制)。
 
分享到:
评论

相关推荐

    ASP3.0高级编程技术

    ASP3.0高级编程技术是Web开发领域中的一个重要里程碑,它是Active Server Pages的第三个主要版本,主要用于构建动态、交互式的网站。在这个版本中,开发者能够利用更强大的功能和改进的性能来创建复杂的Web应用程序...

    ASP3.0高级编程

    ASP3.0高级编程是针对Web开发人员深入学习ASP(Active Server Pages)技术的重要参考资料。在ASP3.0中,微软引入了许多增强功能,使得它成为构建动态网站和Web应用程序的强大工具。本教程旨在帮助开发者掌握ASP3.0的...

    ASP3.0高级编程.pDF

    本书《ASP3.0高级编程》应该是针对这一技术的深入解析和实践指导。 1. **ASP3.0基础**:ASP3.0的核心概念包括脚本语言支持、服务器端控件、内置对象等。学习者应掌握如何创建基本的ASP页面,理解Response、Request...

    ASP3.0高级编程技术中文版—1

    1.4 ASP 3.0对象模型概要 22 1.4.1 对象环境概念 22 1.4.2 ASP内置的对象 23 1.5 ASP 3.0中的新特性 24 1.5.1 ASP 3.0新特性概要 24 1.5.2 对ASP 2.0的改进 26 1.5.3 VBScript 5.0中的新特性 28 1.5.4 JScript 5.0中...

    《ASP 3.0高级编程技术》中文版-2

    1.4 ASP 3.0对象模型概要 22 1.4.1 对象环境概念 22 1.4.2 ASP内置的对象 23 1.5 ASP 3.0中的新特性 24 1.5.1 ASP 3.0新特性概要 24 1.5.2 对ASP 2.0的改进 26 1.5.3 VBScript 5.0中的新特性 28 1.5.4 JScript 5.0中...

    ASP.NET MVC3.0 高级编程

    ASP.NET MVC3.0 是微软开发的一个开源框架,用于构建高度可测试和可维护的Web应用程序。...通过阅读《ASP.NET MVC3.0 高级编程》这本书,你可以获取更多关于这些主题的详细信息,掌握实际开发中的最佳实践。

    ASP 3.0高级编程.rar

    通过深入研究"ASP 3.0高级编程",开发者不仅可以熟练运用ASP 3.0的各种特性和功能,还能为向更现代的技术栈过渡打下坚实的基础,例如ASP.NET或Node.js等。不断学习和适应新的技术,是IT行业从业者保持竞争力的关键。

    ASP 3.0高级编程(一)

    ### ASP 3.0高级编程知识点详解 #### ASP 3.0概述 ASP(Active Server Pages)3.0是微软开发的一种服务器端脚本环境,用于创建动态网页和应用程序。它允许网页开发者在HTML页面中嵌入脚本或ActiveX组件,从而实现更...

    ASP 3.0高级编程

    ASP 3.0高级编程.

    精通ASP3.0网络编程

    通过"精通ASP3.0网络编程"的学习,你不仅将掌握ASP3.0的核心技术,还能培养解决实际问题的能力,从而成为一名熟练的Web开发者。在实践中不断磨炼,你将能够构建出高效、安全且用户友好的Web应用程序。

    《C#与.NET 3.0高级程序设计》[源代码+英文PDF电子书]

    本书是C# 领域久负盛名的经典著作,深入全面地叙述了C# 编程语言和.NET...另外,还介绍了最新的C# 3.0 编程语言和LINQ 编程技术。本书由微软C# MVP Andrew Troelsen 编写,历经多次修订,适合各层次.NET 开发人员阅读。

    ASP.NET MVC3.0 高级编程完整版

    在"ASP.NET MVC3.0 高级编程完整版"中,我们可能涵盖以下关键知识点: 1. **MVC模式**:MVC是一种软件设计模式,将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。模型负责处理...

    ASP3.0高级编程_Part1

    在"ASP3.0高级编程_Part1"中,这些知识点可能被详细讲解,并结合实际案例进行阐述,以帮助读者理解并掌握ASP.NET 3.0的高级特性和最佳实践。通过阅读给出的PDF文件(01.PDF至05.PDF),读者将有机会深入学习这些内容...

    ASP3.0高级编程_Part5

    《ASP.NET 3.0高级编程》是一本深入探讨ASP.NET技术的专业书籍,它涵盖了ASP.NET 3.0的核心概念和高级特性。该书通过图文并茂的方式,为读者提供了丰富的学习资源,还配备有详细的书签,使得阅读和查阅变得极其方便...

    ASP3.0高级编程_Part2

    在这个“ASP3.0高级编程_Part2”中,我们将会深入探讨ASP.NET 3.0的一些核心概念和技术,包括但不限于控件编程、数据绑定、状态管理、安全性以及性能优化。 1. **控件编程**:ASP.NET 3.0引入了大量服务器控件,如...

    ASP 3.0 高级编程

    ASP 3.0 网页制作教程

    外文翻译asp-3.0-高级编程大学论文.doc

    "ASP 3.0高级编程大学论文" 本文档主要介绍了ASP 3.0高级编程的相关知识点,涵盖了WWW的起源、HTML的基本结构、HTML的发展历史、动态内容的缺乏、早期网站的缺陷等方面。 一、WWW的起源 WWW(World Wide Web)...

Global site tag (gtag.js) - Google Analytics