ASP編程入門進階(十八):FSO組件之檔案操作(中)

來源:互聯網
上載者:User
fso|編程|fso 學會了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>




整個就是一很簡單的讀取資訊和加入資訊的混合利用,相信有了前面的基礎看懂應該不成問題。當然還缺少個story.txt檔案,裡面寫好故事開頭就可以了。

調試地址:
http://www.cnbruce.com/code/story.asp

再下面,繼續來,該側重點主要就是練習一些函數的提示了。

1,instr函數:返回某字串在另一字串中第一次出現的位置。
比如現在尋找字母“A”在字串“A110B121C119D1861”中第一次出現的位置,則可以
<script language=vbs>
my_string = "A110B121C119D1861"
a_num = instr(my_string,"A")
alert(a_num)
</script>
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]

同樣字母“B”的位置也就能確定。現在就來最關鍵的:提前字母“A”和“B”中間的值“110”。
還記得mid函數嗎?mid函數的主要作用是:從字串中返回指定數目的字元。
比如現在的“110”則應該是從字串的第2位取得3個單位的值。
<script language=vbs>
my_string = "A110B121C119D1861"
a_value = mid(my_string,2,3)
alert(a_value)
</script>
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]

但設想一下:如果不是“110”,而是“1100”,那是不是要提取4位……這樣就顯出程式的不夠完美。
所以繼續思考:所提取的值,永遠是在字母“A”後面的,且值也永遠是在字母“A”和“B”之間的,那麼只要分別提取出“A”、“B”的位置,則中間數值的起始位應是字母“A”位+1,中間數值的長度應是字母“B”位-字母“A”位-1
那麼現在就可以讓程式完美起來:

<script language=vbs>
my_string = "A110B121C119D1861"
a_num = instr(my_string,"A")
b_num = instr(my_string,"B")
a_value = mid(my_string,a_num+1,b_num-a_num-1)
alert(a_value)
</script>
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]

OK,那麼現在你也就完全可以把字母“B”、“C”、“D”後面的值一一提取了。
當然需要注意的就是“D”後面有幾位怎麼取呢?採用字串總長度-字母D所在位置數就可以了。

<script language=vbs>
my_string = "A110B121C119D1861"
a_num = instr(my_string,"A")
b_num = instr(my_string,"B")
c_num = instr(my_string,"C&quo



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。