?? 19-2.cfm.htm
字號(hào):
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE>在一個(gè)文件中讀寫數(shù)據(jù)</TITLE>
</HEAD>
<BODY LINK="#0000ff">
<B><FONT FACE="宋體" LANG="ZH-CN" SIZE=5><P ALIGN="JUSTIFY">在一個(gè)文件中讀寫數(shù)據(jù)</P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> 這部分介紹如何讀寫一個(gè)文本文件。這對(duì)文本文件有很多用處,包括下面這些。</P>
<B><P ALIGN="JUSTIFY">■</B>一個(gè)常用的日志,利用文本文件記錄訪問者的活動(dòng)以供日后參考。你可以記錄諸如訪問者IP地址,瀏覽器類型等等你能得到而且想要了解的東西。</P>
<B><P ALIGN="JUSTIFY">■</B>Form中的數(shù)據(jù),你可以將用戶在Form的文本框中填寫的東西記入文本文件,盡管使用數(shù)據(jù)庫(kù)會(huì)更加有效。</P>
<B><P ALIGN="JUSTIFY">■</B>每日新聞,將每日的新消息記錄到文本文件,然后可以在很多文件中讀出來顯示</P>
<B><P ALIGN="JUSTIFY"> </P>
</FONT><FONT FACE="宋體" LANG="ZH-CN"><P ALIGN="JUSTIFY">對(duì)文本文件的寫操作</P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> 要?jiǎng)?chuàng)建并且寫入一個(gè)文本文件,你應(yīng)當(dāng)使用FileSystemObject和TextStream對(duì)象。首先,你需要?jiǎng)?chuàng)建一個(gè)FileSystemObject對(duì)象的事例,然后,再利用CreateTextFile()以該事例創(chuàng)建一個(gè)TextStream對(duì)象的事例,最后利用TextStream對(duì)象的WriteLine()方法來寫入文件。下面是這個(gè)例子:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">Set MyFileObject=Server.CreateObject(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>Scripting.FileSystemObject</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">Set MyTextFile=MyFileObject.CreateTextFile(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>c:\mydir\test.txt</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">MyTextFile.WriteLine(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>歡迎進(jìn)入邁至科網(wǎng)絡(luò)ASP教程文件操作示例!</FONT><FONT SIZE=3>”</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">MytextFile.Close</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 這個(gè)例子創(chuàng)建了一個(gè)名字為test.txt的文件,該文件位于c:\mydir\,WriteLine()方法被用來將那一句話寫入該文件。最后,這個(gè)TextStream對(duì)象的事例關(guān)閉并且釋放所有資源,下面部分將對(duì)每一個(gè)步驟進(jìn)行仔細(xì)解釋。</P>
<P ALIGN="JUSTIFY"> </P>
<B><P ALIGN="JUSTIFY">注意</P>
</B><P ALIGN="JUSTIFY"> 如果你需要虛擬路徑轉(zhuǎn)化為真實(shí)路徑(這樣操作使得站點(diǎn)具有更強(qiáng)的可移植性),可以用Server.MapPath()方法,例如下面這個(gè)例子:</P>
<P ALIGN="JUSTIFY">PhysicalPath=Server.MapPath(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>/private/test.txt</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">假設(shè)虛擬路徑/private對(duì)應(yīng)于真實(shí)路徑c:\net\private,那么這個(gè)PhysicalPath的值將是c:\net\private\test.txt</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> CreateTextFile()方法用來創(chuàng)建一個(gè)新的文本文件,當(dāng)這個(gè)方法被調(diào)用,那么就返回一個(gè)TextStream對(duì)象,這個(gè)方法有一個(gè)必須的參數(shù)和兩個(gè)可選的參數(shù)。</P>
<B><P ALIGN="JUSTIFY">■</B>FileSpecifier,限定要?jiǎng)?chuàng)建的文件及路徑,如果沒有這個(gè)參數(shù),顯然是要報(bào)錯(cuò)的。</P>
<B><P ALIGN="JUSTIFY">■</B>Overwrite,這個(gè)參數(shù)是可選的,默認(rèn)為TRUE,如果存在同名的文件,依據(jù)這個(gè)參數(shù)判斷是否進(jìn)行覆蓋操作,如果賦為FALSE,那么存在同名文件時(shí)會(huì)返回錯(cuò)誤信息。</P>
<B><P ALIGN="JUSTIFY">■</B>Unicode,這個(gè)參數(shù)可選,默認(rèn)為False,指示該文件是否用ASC碼形式進(jìn)行創(chuàng)建和保存。如果選擇TRUE,將以Unicode方式創(chuàng)建。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 再利用CreateTextFile()方法創(chuàng)建了文本文件后,你就可以使用TextStream對(duì)象來對(duì)文件進(jìn)行讀寫,在寫操作時(shí),有如下的方法:</P>
<B><P ALIGN="JUSTIFY">■</B>Write(String).這個(gè)方法將一個(gè)字段寫入文本文件。</P>
<B><P ALIGN="JUSTIFY">■</B>WriteLine(String),這個(gè)方法是在文件中添加字串和一個(gè)分行符,這里面的string參數(shù)可選,如果沒有的話,則添加一個(gè)分行符。</P>
<B><P ALIGN="JUSTIFY">■</B>WriteBlankLines(lines),顧名思義,這是允許用戶在文件中指定數(shù)目個(gè)分行符。</P>
<B><P ALIGN="JUSTIFY">■</B>close.這個(gè)方法就是關(guān)閉一個(gè)打開的TextStream文件并釋放其占用的資源。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">下面是一個(gè)連續(xù)在文件中輸出32行同樣字符串的例子腳本:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><% </P>
<P ALIGN="JUSTIFY">Set MyFileObject=Server.CreateObject(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>Scripting.FileSystemObject</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">Set MyTextFile=MyFileObject.CreateTextFile(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>c:\mydir\test.txt</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">For i=1 to 32</P>
<P ALIGN="JUSTIFY"> MyTextFile.WriteLine(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>Hello World!</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">Next</P>
<P ALIGN="JUSTIFY">MyTextFile.Close</P>
<P ALIGN="JUSTIFY">%></P>
<B><P ALIGN="JUSTIFY"> </P>
</FONT><FONT FACE="宋體" LANG="ZH-CN"><P ALIGN="JUSTIFY">在文本文件中讀取和追加數(shù)據(jù)</P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> 這里,首先要做的依然是創(chuàng)建一個(gè)FileSystemObject對(duì)象的事例,然后,利用OpenTextFile()方法來創(chuàng)建一個(gè)TextStream對(duì)象的事例,最后,你就可以用TextStream對(duì)象的ReadLine方法來對(duì)文件讀取,下面是個(gè)例子:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">Set MyFileObject=Server.CreateObject(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>Scripting.FileSystemObject</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">Set MyTextFile=MyFileObject.OpenTextFile(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>c:\mydir\test.txt</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">While not MyTextFile.AtEndOfStream</P>
<P ALIGN="JUSTIFY"> Response.Write(MyTextFile.ReadLine)</P>
<P ALIGN="JUSTIFY">Wend</P>
<P ALIGN="JUSTIFY">MyTextFile.Close</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 這個(gè)腳本將文本文件Test.txt文件中所有的內(nèi)容讀出來并且顯示在瀏覽器上。如果文件不存在,回顯示相應(yīng)錯(cuò)誤信息(在下一個(gè)部分,你會(huì)學(xué)到怎樣檢測(cè)一個(gè)文件是否存在)</P>
<P ALIGN="JUSTIFY">其中While</FONT><FONT SIZE=3>…</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>Wend循環(huán)是將文件內(nèi)容一行一行的循環(huán)讀取,其中如果沒有到達(dá)文件末尾,那么AtEndOfStream屬性就會(huì)是False,直到末尾時(shí)變?yōu)門rue。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 下面是讀取文件時(shí)可能會(huì)用到的屬性:</P>
<B><P ALIGN="JUSTIFY">■</B>AtEndOfLine。這個(gè)屬性判斷是否到了文件中一個(gè)特定行的末尾,如果不是,則為False,反之為True</P>
<B><P ALIGN="JUSTIFY">■</B>AtEndOfStream。就是這個(gè)例子中用到的,判斷是否到了該文件的結(jié)尾并依此返回True和False</P>
<B><P ALIGN="JUSTIFY">■</B>Column。這個(gè)屬性判斷當(dāng)前字符在該行的位置,返回一個(gè)整數(shù)值。</P>
<B><P ALIGN="JUSTIFY">■</B>Line。這個(gè)屬性判斷當(dāng)前行在文件中的行數(shù),返回一個(gè)整數(shù)值</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 除了使用ReadLine方法以外,你當(dāng)然還可以使用Read()方法。Read()方法會(huì)從指定打開的文本文件中返回指定數(shù)目個(gè)字符。下面是用這個(gè)方法的示例:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">Set MyFileObject=Server.CreateObject(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>Scripting.FileSystemObject</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">Set MyTextFile=MyFileObject.OpenTextFile(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>c:\mydir\test.txt</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">While NOT MyTextFile.AtEndOfLine</P>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -