學會了FSO提取文件值,也學會了將信息輸入到文件中,那下面就再來應用應用下。
不知道你有沒有這樣的習慣:看到一個文件,不自覺的右鍵選擇用記事本打開。呵呵,幾乎沒有哪個文件是不可以的。所以現在,可以默認所有文件都是文本,只是後綴名不同而已;那麼也就是說,現在可以提取任一文件的內容信息。 OK,就來想像一下:
1,提取一個文件的路徑(採用file按鈕進行查找定位)
2,將該路徑文件打開,並讀取所有行
3,顯示讀取的信息
一、viewcode.asp
| <% Function ShowCode(filename) Set fso = Server.CreateObject("Scripting.FileSystemObject") Set cnrs = fso.OpenTextFile(filename, 1) While Not cnrs.AtEndOfStream rsline = cnrs.ReadLine rsline = server.HTMLEncode(rsline) Response.Write(rsline & "<br>") Wend end Function %> <form action="viewcode.asp" method="post"> 輸入文件名<input type="file" name="filename"> <input type="submit" value="查看源程序"> </form> <% file=request.form("filename") response.write (file & "源程序如下<hr>") If trim(file)<> "" then Call ShowCode(file) End If %> |
以上程序調試時,可以選擇html,asp頁面,也可以打開任一應用程序等。
定義的ShowCode函數,主要作用是打開、讀取並顯示文件中所有信息內容。注意添加了server.HTMLEncode(rsline),針對含有標準HTML代碼的文件。
顯示文件中所有行即用一條件循環進行遍歷顯示了。
While Not cnrs.AtEndOfStream
...
Wend
接著,下面的這個例題具體就涉及open方法的問題了,還記得?正常情況之下打開文件是採用fso.OpenTextFile("c:/testfile.txt",1),參數1的作用是:以只讀模式打開文件。不能對此文件進行寫操作。如果現在已經存在一文件,需要進行追加寫入,則該怎麼辦呢?簡單,參數為8即可。
PS:這裡還有一種讀取的方法。
<% whichfile=server.mappath("test.txt") Set fso = CreateObject("Scripting.FileSystemObject") Set txt = fso.OpenTextFile(whichfile,1) rline = txt.ReadAll rline=replace(Server.HtmlEncode(rline),Chr(13),"<br>") Response.Write rline txt.Close %> |
這有什麼用呢?呵呵,亞瑪遜的網絡故事接龍就是如此:能接龍就需要首先要顯示原有故事,然後自己添加故事寫入文件。這其中的寫入文件最講究的就是追加寫入了。所以下面就可以實現。
二、story.asp
<% If not request.Form("NextLine")="" then Set fso=Server.CreateObject("Scripting.FileSystemobject") textfile1=Server.MapPath("story.txt") set cnrs=fso.OpenTextFile(textfile1,8) cnrs.WriteLine(Request.Form("NextLine")) cnrs.Close end if %> 故事如下: <% Set fso=Server.CreateObject("Scripting.FileSystemObject") textfile1=Server.MapPath("story.txt") set cnrs=fso.OpenTextFile(textfile1,1) while not cnrs.AtEndOfStream Response.Write "" & cnrs.ReadLine wend cnrs.close %> <hr> <form method="post" action="story.asp"> 請輸入這個故事的新行:<input name="NextLine" type="text" size="70"> <input type="submit" value="提交"> </form>
|