冷月葬花魂 发表于 2015-1-16 22:55:31

ASP网页设计Scripting.TextStream工具

结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。stream|工具
FileSystemObject、Folder和File工具的一些办法都与经由过程TextStream工具创立、读取或写进文件有关。
固然TextStream工具界说为FileSystemObject工具的一个自力的从属工具,但我们不能不利用FileSystemObject工具或其从属工具来创立一个TextStream工具并会见磁盘文件的内容。

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的文件,并掩盖已存在的同名文件:
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
SetobjTStream=objFSO.CreateTextFile("C:TextFilesMyFile.txt",True,False)
这一样可用JScript完成:
varobjFSO=Server.CreateObject(Scripting.FileSystemObject);
varobjTStream=objFSO.CreateTextFile(C:TextFilesMyFile.txt,true,false);
一旦创立了该文件,就能够利用objTStream(它是对一个TextStream工具的援用)对文件举行操纵。
2.翻开已存在的文本文件
OpenTextFile办法用于翻开一个已有的文本文件。它前往一个TextStream工具,可用这个工具对文件读或追加数据。
一样,起首创立一个FileSystemObject工具,然后用其创立一个TextStream工具。上面的VBScript程序例子翻开一个名为MyFile.txt的文件,筹办读出其内容:
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
SetobjTStream=objFSO.OpenTextFile("C:TextFilesMyFile.txt",ForReading)
用JScript:
varobjFSO=Server.CreateObject(Scripting.FileSystemObject);
varobjTStream=objFSO.OpenTextFile(C:TextFilesMyFile.txt,ForReading);
为了写进一个文件或创立一个不存在的文件,能够用以下代码:
InVBScript:
SetobjTStream=objFSO.OpenTextFile("C:TextFilesMyFile.txt",ForWriting,True)

//InJScript:
varobjTStream=objFSO.OpenTextFile(C:TextFilesMyFile.txt,ForWriting,true);
假如要翻开一个已有的Unicode文件,筹办对其追加数据,可是不创立不存在的文件,能够用:
InVBScript:
SetobjTStream=objFSO.OpenTextFile("C:TextFilesMyFile.txt",ForReading,_
False,TristateTrue)
//InJScript:
varobjTStream=objFSO.OpenTextFile(C:TextFilesMyFile.txt,ForReading,_
fasle,TristateTrue);
3.作为一个TextStream工具翻开一个File工具
可用File工具的OpenAsTextStream办法翻开与该工具响应的文件,而且前往一个能对该文件举行读、写和追加的TextStream工具。以是,给定一个File工具(这类情形下不是FileSystemObject工具)――objFileObject,可作为一个“一般的”(非Unicode)TextStream工具翻开它,以供追加文件内容:
InVBScript:
SetobjTStream=objFileObject.OpenAsTextStream(ForAppending,False)

//InJScript:
varobjTStream=objFileObject.OpenTextFile(ForAppending,false);
注重,利用这类办法不必要文件名,由于程序的实行经由过程援用File工具举行,而且没有create参数,由于该文件必需已存在,假如想从一个新的空的文件入手下手,能够用:
InVBScript:
SetobjTStream=objFileObject.OpenAsTextStream(ForWriting)

//InJScript:
varobjTStream=objFileObject.OpenTextFile(ForWriting);
假如想读取该文件:
InVBScript:
SetobjTStream=objFileObject.OpenAsTextStream(ForReading)

//InJScript:
varobjTStream=objFileObject.OpenTextFile(ForReading);

5.5.2TextStream工具成员提要
表5-15和表5-16是TextStream工具的全体属性和办法的列表。上面将冗长先容各个主要的成员的细节。
1.TextStream工具的属性
TextStream的属性供应有关文件内文件指针以后地位的信息,如表5-15所示。注重,一切的属性是只读的。
表5-15TextStream工具的属性及申明
属性
说明

AtEndOfLine
假如文件地位指针在文件中一行的开端则前往True

AtEndOfStream
假如文件地位指针在文件的开端则前往True

Column
从1入手下手前往文件中以后字符的列号

Line
从1入手下手前往文件中以后行的行号

AtEndOfLine和AtEndOfStream属性仅对以iomode参数为ForReading的体例翻开的文件可用,不然将会堕落。
2.TextStream工具的办法
TextStream工具的办法如表5-16所示:
表5-16TextStream工具的办法及申明
方法
说明

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程序写文件和封闭文件:
InVBScript:
objTStream.WriteLine"AtlastIcancreatefileswithVBScript!"
objTStream.WriteLine
objTStream.WriteLine"Herearethreeblanklines:"
objTStream.WriteBlankLines3
objTStream.Write"...andthisis"
objTStream.WriteLine"thelastline."
objTStream.Close
大概用JScript:
//InJScript:
objTStream.WriteLine(AtlastIcancreatefileswithJScript!);
objTStream.WriteLine();
objTStream.WriteLine(Herearethreeblanklines:);
objTStream.WriteBlankLines(3);
objTStream.Write(...andthisis);
objTStream.WriteLine(thelastline.);
objTStream.Close();
4.读文本文件
一旦利用CreateTextFile、OpenTextFile或OpenAsTextStream办法和ForReading参数,创立一个对应于某个文件的TextStream工具,能够用上面的VBScript程序读文件和封闭文件:
InVBScript:
readonelineatatimeuntiltheendofthefileisreached
DoWhileNotobjTStream.AtEndOfStream
getthelinenumber
intLineNum=objTStream.Line
formatitasa4-characterstringwithleadingzeros
strLineNum=Right("000"&CStr(intLineNum),4)
getthetextofthelinefromthefile
strLineText=objTStream.ReadLine
Response.WritestrLineNum&":"&strLineText&"<BR>"
Loop
objTStream.Close
或用JScript:
//InJScript:
//readonelineatatimeuntiltheendofthefileisreached
while(!objTStream.AtEndOfStream){
//getthelinenumber
intLineNum=objTStream.Line;
//formatandconverttoastring
strLineNum=000+intLineNum.toString();
strLineNum=substr(strLineNum,strLineNum.lengthC4,4)
//getthetextofthelinefromthefile
strLineText=objTStream.ReadLine();
Response.Write(strLineNum+:+strLineText+<BR>);
}
objTStream.Close();

5.5.3TextStream工具举例
为了懂得利用TextStream工具操纵消逝文件的几种体例,本书供应了一个VBScript示例页面,该页利用了大批的上述的代码。从示例的Chapter05主菜单页,选择链接“WorkingWiththeTextStreamObject”翻开show_textstream.asp页面。
该页显现了存储在磁盘上名为MyFile.txt的文件的文本内容。在<TEXTAREA>控件里显现的文本内容同意举行编纂,而且上面有三个按钮。三个按钮的感化分离是用<TEXTAREA>控件的内容更新(即代替)最后的文本,在已有文件内容的前面增加文本,或用初始的缺省内容重写文件,如-15所示:

1.读取已存在的文本文件的内容
每次载进该页面,将翻开文本文件并将读取的内容置进<TEXTAREA>控件。注重我们怎样利用Server.MapPath办法失掉文件MyFile.txt的相对物理路径,该文件与示例页面在统一目次下。上面的程序创立FileSystemObject实例:
<%
strTextFile=Server.MapPath("MyFile.txt")

createaninstanceofaFileSytemObjectobject
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")

与书中本部分的年夜多半其他示例一样,该页包括一个<FORM>段以保留该页面的HTML控件。ACTION是以后页面,因而窗体的内容送回到统一页面。
每次载进该页面,<TEXTAREA>控件用文本文件确当前内容添补:

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

Thecontentsofthediskfile<B><%=strTextFile%></B>are:<P>
<TEXTAREANAME="txtContent"ROWS="10"COLS="50"WRAP="PHYSICAL">
<%
openthetextfileasaTextStreamobject
SetobjTStream=objFSO.OpenTextFile(strTextFile,ForReading)
readonelineatatimeuntiltheendofthefileisreached
DoWhileNotobjTStream.AtEndOfStream
getthelinenumber
intLineNum=objTStream.Line
formatandconverttoastring
strLineNum=Right("00"&CStr(intLineNum),3)
getthetextofthelinefromthefile
strLineText=objTStream.ReadLine
Response.WritestrLineNum&":"&strLineText&vbCrLf
Loop
objTStream.Close
%>
</TEXTAREA><P>
由下面程序可晓得怎样翻开文本文件举行读取,遍历全部文件每次读取一行(而不是作为一个字符串读出全部文件)。这是由于要增加本人的行号,行号不属于该文件的文本。对从该文件读出的每行(读之前),检索而且格局化Line属性并创立一个三位数字的行号。然后把行编号和文本行安排页面的<TEXTAREA>控件内。
2.更新文本文件的内容
当点击页面的Update按钮时(通常为在编纂了<TEXTAREA>控件里的文本今后),将把<TEXTAREA>控件里的内容从头写进到该文本文件内。为此,该页有响应的一些ASP代码,在创立HTML控件之前查验Request.Form汇合,检察点击的是哪个按钮(假如有的话),然后就从头载进该页。
假如点击Update按钮,汇集<TEXTAREA>控件的内容作为一个字符串,分别这个字符串使之成为自力文本选择的数组,而且翻开文本文件筹办重写其内容,然后遍历方才创立的数组,按行号轮回写进该行的内容:

lookforacommandsentfromtheFORMsectionbuttons
IfLen(Request.Form("cmdUpdate"))Then
GetcontentsofTEXTAREAcontrol
strNewText=Request.Form("txtContent")
Splititintoanarrayoflinesateachcarriagereturn
arrLines=Split(strNewText,vbCrLf)
Openthetextfileforwriting,whichreplacesallexistingcontent
SetobjTStream=objFSO.OpenTextFile(strTextFile,ForWriting)
ForintLine=0ToUBound(arrLines)
strThisLine=arrLines(intLine)
Writeouteachlineinturnaslongasit’sgotalinenumber
IfLen(strThisLine)>4ThenobjTStream.WriteLineMid(strThisLine,6)
Next
objTStream.Close
EndIf

HTML<TEXTAREA>控件可在前往的Value中增添分外字符,这依附于原始HTML页内的内容格局和WRAP属性的设置。出格是应在ASP剧本停止定界符“%>”后当即写上</TEXTAREA>标志,以避免增添一个分外的回车标记。即便用:
%></TEXTAREA><p>
而不利用:
%>
</TEXTAREA><P>
3.向文本文件追加内容
当点击Append按钮时,可对已有的文件追加内容,与修正该文件内容相似,如-16所示。区分是翻开该文件是为了追加而不是为了改写文件。挪用OpenTextFile办法时可增添分外参数,避免在指定的文件2不存在时创立新文件。

IfLen(Request.Form("cmdAppend"))Then
appendcontentsofTEXTAREAtofile
strNewText=Request.Form("txtContent")
arrLines=Split(strNewText,vbCrLf)
SetobjTStream=objFSO.OpenTextFile(strTextFile,ForAppending,False)
ForintLine=0ToUBound(arrLines)
strThisLine=arrLines(intLine)
IfLen(strThisLine)>4ThenobjTStream.WriteLineMid(strThisLine,6)
Next
objTStream.Close
EndIf



4.重写缺省内容
最初,Restore按钮用来将初始缺省内容复杂地重写回文本文件。代码与用TextStream的办法写一个文本文件相似:

IfLen(Request.Form("cmdDefault"))Then
writeoutdefaultcontentstofile
SetobjTStream=objFSO.CreateTextFile(strTextFile,True,False)
objTStream.WriteLine"AtlastIcancreatefileswithVBScript!"
objTStream.WriteLine
objTStream.WriteLine"Herearethreeblanklines:"
objTStream.WriteBlankLines3
objTStream.Write"...andthisis"
objTStream.WriteLine"thelastline."
objTStream.Close
EndIf

5.6小结
本章报告了在ASP页面中利用工具和组件的壮大才能。起首会商工具和组件的一样平常特征,和它们的范例。然后会合叙述了怎样在ASP(及客户端)剧本代码内创立工具实例。
在页面上利用的很多工具大概都是“内部”组件,这些组件安装在服务器上,自力于ASP。本章所会商的工具,当ASP利用一种缺省的剧本言语(如VBScript或JScript)时,老是可用的。实在现是经由过程scrrun.dll文件里的剧本运转期库完成的。
这些工具是指Dictonary工具、FileSystemObject工具和TextStream工具。
Dictionary工具为我们供应了存储值的一种无效体例,可依据名字举行索引和会见,而不是依据一个数字举行会见。这是存储名字/值对如许的数据的幻想体例。
FileSystemObject工具和TextStream工具互相之间接洽亲切,可以使用它们会见服务器或收集(映照)的磁盘驱动器的目次。FileSystemObject工具供应对驱动器、文件夹(目次)和文件的存取,并供应了用于关于取得更多的信息或挪动、复制、删除它们的属性及办法。
能够创立对应于体系内的任何文件的TextStream工具,并经由过程该工具对文件举行读取和写进。关于读写历程它作为文本文件操纵,乃至能够处置Unicode格局的文件。对文件体系的导航和读写才能的分离同意对服务器文件体系举行极为庞大的把持。还能够在客户端剧本代码中利用工具(有必定限定)。

asp是基于web的一种编程技术,可以说是cgi的一种。它可以完成以往cgi程序的所有功能,如计数器、留言簿、公告板、聊天室等等。

若天明 发表于 2015-1-20 06:11:31

下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。

若相依 发表于 2015-1-28 20:37:23

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

再现理想 发表于 2015-2-5 22:49:54

最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。

第二个灵魂 发表于 2015-2-14 01:20:04

接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。

海妖 发表于 2015-3-4 03:47:02

Session:这个存储跟客户端会话过程的数据,默认20分钟失效

再见西城 发表于 2015-3-11 16:07:20

Session:这个存储跟客户端会话过程的数据,默认20分钟失效

山那边是海 发表于 2015-3-19 01:49:23

还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。

莫相离 发表于 2015-3-27 03:09:45

多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。

乐观 发表于 2015-3-27 03:09:45

ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
页: [1]
查看完整版本: ASP网页设计Scripting.TextStream工具