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