|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
专业性的服务。有的ASP商提供垂直型的应用服务,针对某一特定行业提供应用服务。fso FSO中除可以对驱动器、文件夹的操作之外,功效最壮大的就是对文件的操作了。它可以用来记数、内容办理、搜刮还可生成静态HTML页面等等。 <P> 1、fso.OpenTextFile
无需多说,fso.OpenTextFile就是翻开某个文件了,普通情形之下是翻开的txt文本文件。所以起首咱们先创立一个txt文件,然后经由过程FSO来读取个中的内容。 <P> 1,info.txt <P class=code>
name:cnbruce
sex:male
<P> 创立了该文件,上面再做个ASP页面,固然最好两个文件是在统一目次下。 <P> 2,opentxt.asp- <%
- whichfile=server.mappath("info.txt")
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set txt = fso.OpenTextFile(whichfile,1)
- rline = txt.ReadLine
- rline = rline & "<br>" & txt.ReadLine
- Response.Write rline
- txt.Close
- %>
- <P> 需求注重:不管是经由过程FSO翻开驱动器、翻开文件夹、翻开文件,和今后要接触到的翻开<P>数据库,都只能是翻开相对物理途径地址。但普通情形是上传到空间办事商那,不克不及很直接地<P>懂得到本人文件的地点地位,所以激烈保举利用server.mappath办法:平台移植性强,合用<P>性强。 <P> CreateObject("Scripting.FileSystemObject")创立了FSO组件的毗连,<P>fso.OpenTextFile(whichfile,1)翻开了info.txt该文件。参数“1”暗示<P>“ForReading:以只读体例翻开文件。不克不及写这个文件。”,其他还有参数<P>“2”暗示“ForWriting:以写体例翻开文件”,参数“8”暗示“ForAppending:<P>翻开文件并从文件末尾入手下手写”。 <P> 翻开了该文件,接上去是否是要显示文件中的内容?那就经由过程txt.ReadLine<P>办法读取文本中的一整行,假如需求持续读取下一行,则持续利用txt.ReadLine<P>办法。固然初此还有其它的读取办法,好比txt.Read(7)读取指定命量的字符,<P>txt.ReadAll前往文本中的全体内容。 <P> 2、fso.CreateTextFile
- 如fso.CreateFolder创立文件夹般,fso.CreateTextFile则是创立文件了。 <P> 3,creattxt.asp <P class=code>
- <%
- whichfile=server.mappath("info.txt")
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set MyFile = fso.CreateTextFile(whichfile,True)
- MyFile.WriteLine("My Name Is CN-Bruce")
- MyFile.WriteLine("My Sex Is Male")
- MyFile.Close
- %>
- <a href="opentxt.asp">检查内容</a>
- <P> 本次创立的文件是上一info.txt文件,fso.CreateTextFile(whichfile,True)<P>个中的参数true即暗示能掩盖已有文件。创立后需求向外面添加数据就采取<P>“MyFile.WriteLine”了。 <P> 那如今就能够创立一个复杂的文本记髁耍辜堑靡郧暗募鞘浚?,<P>经由过程application、session、global.asa停止记数;2,经由过程Counter组件停止记数。<P>但二者都有通病,就是不克不及保留,假如办事重视新启动后,是否是一切记数全体清空了呢:)<P>那如今就能够利用文原本纪录数据了,即便重启,下次提取的也仍是该文件。 <P> 实验:文本计数器 <P> 起首创立一记数的文本文件counter.txt,设定初始值为“1” <P> 4,counter.txt <P class=code>
- 1
- <P> 接着是记数的ASP文件,功效是显示文本的记数,本做加1的记数,<P>然后还要将新的记数写入文本文件。 <P> 5,txtcount.asp <P class=code>
- <%
- whichfile=server.mappath("counter.txt")
- '翻开文件并将其值读取,最初封闭毗连释放资本
- set fso=createobject("Scripting.FileSystemObject")
- set openfile=fso.opentextfile(whichfile,1)
- visitors=openfile.readline
- openfile.close
- '页面显示记数内容并做加1运算
- response.write "您是本页的第"&visitors&"位访客"
- visitors=visitors+1
- '将新的数值添加写入到文本,最初封闭一切毗连释放资本
- set creatfile=fso.createtextfile(whichfile)
- creatfile.writeLine(visitors)
- creatfile.close
- set fso=nothing
- %>
- 那依据这个可以持续地扩大内容:好比让记数用数字图片显示。
- 固然条件就是你需求0-9的10张记数图片,并将此图片放于img文件夹中。
- 下为一加强的txtcount.asp内容代码。
- <P class=code>
- <%
- whichfile=server.mappath("counter.txt")<P>set fso=createobject("Scripting.FileSystemObject")
- set openfile=fso.opentextfile(whichfile,1)
- visitors=openfile.readline
- openfile.close
- CountLen=len(visitors)
- response.write "您是本页的第"<P>for i=1 to 6-countLen '暗示最大值999999
- response.write "<img src=http://www.webjx.com/htmldata/2005-05-17/img/0.gif></img>"
- next
- for i=1 to countlen
- response.write "<img src=img/" & mid(visitors,i,1) & ".gif></img>"
- next
- response.write "位访客"visitors=visitors+1
- set creatfile=fso.createtextfile(whichfile)
- creatfile.writeLine(visitors)
- creatfile.close
- set fso=nothing
- %>
- <P> 本法式中采取的是mid函数,该函数的感化是前往某字符串中从第几位<P>字符入手下手的几个字符。格局即为:Mid(string,start,length) <P class=code>
- <script language=vbs>
- cn_string= "cnbruce love cnrose"
- cn_start = 9
- cn_length = 4
- alert (mid(cn_string,cn_start,cn_length))
- </script>[code]学会了FSO提取文件值,也学会了将信息输出到文件中,那上面就再来使用使用下。 <P> 不晓得你有无如许的习气:看到一个文件,不盲目的右键选择用记事本翻开。<P>呵呵,几近没有哪一个文件是不成以的。所以如今,可以默许一切文件都是文本,<P>只是后缀名分歧罢了;那末也就是说,如今可以提取任一文件的内容信息。OK,就来想象一下: <P> 1,提取一个文件的途径(采取file按钮停止查找定位)
- 2,将该途径文件翻开,并读取一切行
- 3,显示读取的信息 <P> 1、viewcode.asp <P class=code>
- <%
- 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
- %><P><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
- %>
- <P> 以上法式调试时,可以选择html,asp页面,也能够翻开任一使用法式等。 <P> 界说的ShowCode函数,次要感化是翻开、读取并显示文件中一切信息内容。<P>注重添加了server.HTMLEncode(rsline),针对含有尺度HTML代码的文件。 <P> 显示文件中一切行即用一前提轮回停止遍历显示了。 <P class=code>
- While Not cnrs.AtEndOfStream
- ...
- Wend
- <P> 接着,上面的这个例题详细就触及open办法的成绩了,还记得?正常情形之<P>下翻开文件是采取fso.OpenTextFile("c:\testfile.txt",1),参数1的感化是:<P>以只读形式翻开文件。不克不及对此文件停止写操作。假如如今已存在一文件,<P>需求停止追加写入,则该怎样办呢?复杂,参数为8便可。 <P> 这有甚么用呢?呵呵,亚玛逊的收集故事接龙就是如斯:能接龙就需求起首<P>要显示原有故事,然后本人添加故事写入文件。这个中的写入文件最考究的就是<P>追加写入了。所以上面就能够完成。 <P> 2、story.asp <P>
- <%
- 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>
- <P> 全部就是一很复杂的读守信息和到场信息的夹杂使用,信任有了后面的基本<P>看懂应当不成成绩。固然还短少个story.txt文件,外面写好故事开首就能够了。 <P> 调试<P> 再上面,持续来,该偏重点次要就是实习一些函数的利用技能了。 <P> 1,instr函数:前往某字符串在另外一字符串中第一次呈现的地位。
- 好比如今查找字母“A”在字符串“A110B121C119D1861”中第一次呈现的地位,则可以 <P class=code>
- <script language=vbs>
- my_string = "A110B121C119D1861"
- a_num = instr(my_string,"A")
- alert(a_num)
- </script>
- 一样字母“B”的地位也就可以肯定。如今就来最关头的:提早字母“A”和“B”
- 两头的值“110”。还记得mid函数吗?mid函数的次要感化是:从字符串中前往指定命目标字符。
- 好比如今的“110”则应当是从字符串的第2位获得3个单元的值。
- <P class=code>
- <script language=vbs>
- my_string = "A110B121C119D1861"
- a_value = mid(my_string,2,3)
- alert(a_value)
- </script>
- 但假想一下:假如不是“110”,而是“1100”,那是否是要提取4位……如许就
- 显出法式的不敷完善。
- 所以持续思虑:所提取的值,永久是在字母“A”前面的,且值也永久是在字母
- “A”和“B”之间的,
- 那末只需分离提掏出“A”、“B”的地位,则两头数值的肇端位应是字母“A”位+1,
- 两头数值的长度应
- 是字母“B”位-字母“A”位-1
- 那末如今就能够让法式完善起来:
- <P class=code>
- <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>
- OK,那末如今你也就完整可以把字母“B”、“C”、“D”前面的值逐一提取了。
- 固然需求注重的就是“D”前面有几位怎样取呢?采取字符串总长度-字母D地点
- 地位数就能够了。
- <P class=code>
- <script language=vbs>
- my_string = "A110B121C119D1861"
- a_num = instr(my_string,"A")
- b_num = instr(my_string,"B")
- c_num = instr(my_string,"C")
- d_num = instr(my_string,"D")
- total_num = len(my_string)
- a_value = mid(my_string,a_num+1,b_num-a_num-1)
- b_value = mid(my_string,b_num+1,c_num-b_num-1)
- c_value = mid(my_string,c_num+1,d_num-c_num-1)
- d_value = mid(my_string,d_num+1,total_num-d_num)
- alert(a_value)
- alert(b_value)
- alert(c_value)
- alert(d_value)
- </script>
- 用到如今,你或许的确学到了很多,但或许会提出疑问:这个放在FSO文件操作
- 里有甚么感化呢?
- 那上面才是咱们的正题:用FSO停止复杂的文本投票。
- <P> 投票页面重要的就是显示各类项目标投票数,并响应赋于某个变量。然后<P>判别本次投票的选相,<P>绝对应地将投票数值加1,终了后再将一切值持续写入文本。 <P> 1,一个HTML表单页website.html
- 以做投票点击的平台。 用到如今,你或许的确学到了很多,但或许会提出疑问:这个放在FSO文件操作里
- 有甚么感化呢?
- 那上面才是咱们的正题:用FSO停止复杂的文本投票。
- <P class=code>
- <form action="result.asp" method="post">
- <input type="radio" name="website" value="A" checked> cnbruce.com<br>
- <input type="radio" name="website" value="B"> blueidea.com<br>
- <input type="radio" name="website" value="C"> it365cn.com<br>
- <input type="radio" name="website" value="D"> 5d.cn<br>
- <input type="submit">
- <input type="reset">
- <P> 2,承受表单页值的result.asp <P class=code>
- <%
- whichfile=server.mappath("site.txt")
- set fso=createobject("Scripting.FileSystemObject")
- set thisfile=fso.opentextfile(whichfile)
- my_string=thisfile.readline<P>a_num = instr(my_string,"A")
- b_num = instr(my_string,"B")
- c_num = instr(my_string,"C")
- d_num = instr(my_string,"D")
- total_num = len(my_string)<P>a_value = mid(my_string,a_num+1,b_num-a_num-1)
- b_value = mid(my_string,b_num+1,c_num-b_num-1)
- c_value = mid(my_string,c_num+1,d_num-c_num-1)
- d_value = mid(my_string,d_num+1,total_num-d_num)<P>select case request.form("website")
- case "A": a_value=a_value+1
- case "B": b_value=b_value+1
- case "C": c_value=c_value+1
- case "D": d_value=d_value+1
- end selectmynew_string="A" & cstr(a_value) & "B" & cstr(b_value) & "C"
- & cstr(c_value) & "D" & cstr(d_value)
- set newfile=fso.createtextfile(whichfile)
- newfile.writeLine(mynew_string)
- newfile.close
- set fso=nothing
- %>
- 以后投票:<br>
- cnbruce.com:<%=a_value%><br>
- blueidea.com:<%=b_value%><br>
- it356cn.com:<%=c_value%><br>
- 5d.cn:<%=d_value%><br>
- <a href="website.html">前往持续</a>
- <P> 有了下面函数的基本,看这个应当不是很难的。 <P> 3,最初不要忘了的记数文件site.txt <P> 格局:A1B1C1D1 <P> [u]调试[/u] OK,三个文件就能够胜任一个很复杂的投票体系了,假如要增强,
- 需求细化的则联合之前的常识吧,好比投过一次后设置session或cookies,
- 当再次投票时分判别假如session或cookies存在则不答应,也就是复杂的投票防作
- 假手腕了……固然更多的仍是要本人去想去理论了。
- 一,fso.GetFile
- 提取文件响应的 File 对象
- <P> 1,getfile.asp <P class=code>
- <%
- whichfile=Server.MapPath("cnbruce.txt")
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set f1 = fso.CreateTextFile(whichfile,true)
- f1.Write ("This is a test.My Name is cnbruce.")
- f1.Close
- Set f2 = fso.GetFile(whichfile)
-
- s = "文件称号:" & f2.name & "<br>"
- s = s & "文件短途径名:" & f2.shortPath & "<br>"
- s = s & "文件物理地址:" & f2.Path & "<br>"
- s = s & "文件属性:" & f2.Attributes & "<br>"
- s = s & "文件巨细: " & f2.size & "<br>"
- s = s & "文件类型: " & f2.type & "<br>"
- s = s & "文件创立工夫: " & f2.DateCreated & "<br>"
- s = s & "比来会见工夫: " & f2.DateLastAccessed & "<br>"
- s = s & "比来修正工夫: " & f2.DateLastModified
- response.write(s)
- %>
- <P> 其后果正如右键某文件,看到的详细属性信息。
- 个中Attributes前往的数值“32”暗示:(Archive)前次备份后已更改的文件。可读写。 <P> 其它值附录以下: <P class=code>
- Normal 0 通俗文件。 没有设置任何属性。
- ReadOnly 1 只读文件。 可读写。
- Hidden 2 埋没文件。 可读写。
- System 4 体系文件。 可读写。
- Directory 16 文件夹或目次。 只读。
- Archive 32 前次备份后已更改的文件。 可读写。
- Alias 1024 链接或快捷体例。 只读。
- Compressed 2048 紧缩文件。 只读。
- 二,file.move
- 感化将指定的文件或文件夹从某地位挪动到另外一地位。其实该办法依然属于
- fso.GetFile后的一个使用。
- <P> 2,movefile.asp <P>
- <%
- whichfile=Server.MapPath("cnbruce.txt")
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set f1 = fso.CreateTextFile(whichfile,true)
- f1.Write ("This is a test.My Name is cnbruce.")
- f1.Close
- Set f2 = fso.GetFile(whichfile)
- f2.Move "C:\"
- %>
- <a href="C:\">检查下有无</a>
- <P>
- 复杂的剪切粘贴的功效完成。 <P> 三,File.Copy
- 一样属于fso.GetFile后的一个使用。就只是纯真地拷贝文件到某地位。 <P> 3,copyfile.asp <P class=code>
- <%
- whichfile=Server.MapPath("cnbruce.txt")
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set f1 = fso.CreateTextFile(whichfile,true)
- f1.Write ("This is a test.My Name is cnbruce.")
- f1.Close
- Set f2 = fso.GetFile(whichfile)
- f2.Copy "D:\"
- %>
- <a href="D:\">检查下有无</a>
- <P> 和本ASP页面同在目次下的cnbruce.txt文件仍然存在。 <P> 四,file.Delete
- 很明显,就是直接删除文件了。 <P> 4,delfile.asp <P class=code>
- <%
- whichfile=Server.MapPath("cnbruce.txt")
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set f1 = fso.CreateTextFile(whichfile,true)
- f1.Write ("This is a test.My Name is cnbruce.")
- f1.Close
- Set f2 = fso.GetFile(whichfile)
- f2.move "d:\"
- Set f3 = fso.GetFile("d:\cnbruce.txt")
- f3.delete
- %>
- <a href="d:\">检查下是没有该文件的</a>
- 固然FSO还没有停止,好比上传文件,ASP转HTML等都需求用到FSO。更出色的仍然是在前面。
复制代码 [/code]SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。 |
|