仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1633|回复: 19
打印 上一主题 下一主题

[学习教程] ASP网页设计FSO组件之文件操作

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:30:16 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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
  1. <%
  2. whichfile=server.mappath("info.txt")
  3. Set fso = CreateObject("Scripting.FileSystemObject")
  4. Set txt = fso.OpenTextFile(whichfile,1)
  5. rline = txt.ReadLine
  6. rline = rline & "<br>" & txt.ReadLine
  7. Response.Write rline
  8. txt.Close
  9. %>
  10. <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
  11.   如fso.CreateFolder创立文件夹般,fso.CreateTextFile则是创立文件了。 <P>  3,creattxt.asp <P class=code>
  12. <%
  13. whichfile=server.mappath("info.txt")
  14. Set fso = CreateObject("Scripting.FileSystemObject")
  15. Set MyFile = fso.CreateTextFile(whichfile,True)
  16. MyFile.WriteLine("My Name Is CN-Bruce")
  17. MyFile.WriteLine("My Sex Is Male")
  18. MyFile.Close
  19. %>
  20. <a href="opentxt.asp">检查内容</a>
  21. <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>
  22. 1
  23. <P>  接着是记数的ASP文件,功效是显示文本的记数,本做加1的记数,<P>然后还要将新的记数写入文本文件。 <P>  5,txtcount.asp <P class=code>
  24. <%
  25. whichfile=server.mappath("counter.txt")
  26. '翻开文件并将其值读取,最初封闭毗连释放资本
  27. set fso=createobject("Scripting.FileSystemObject")
  28. set openfile=fso.opentextfile(whichfile,1)
  29. visitors=openfile.readline
  30. openfile.close
  31. '页面显示记数内容并做加1运算
  32. response.write "您是本页的第"&visitors&"位访客"
  33. visitors=visitors+1
  34. '将新的数值添加写入到文本,最初封闭一切毗连释放资本
  35. set creatfile=fso.createtextfile(whichfile)
  36. creatfile.writeLine(visitors)
  37. creatfile.close
  38. set fso=nothing
  39. %>
  40.   那依据这个可以持续地扩大内容:好比让记数用数字图片显示。
  41. 固然条件就是你需求0-9的10张记数图片,并将此图片放于img文件夹中。
  42.   下为一加强的txtcount.asp内容代码。
  43. <P class=code>
  44. <%
  45. whichfile=server.mappath("counter.txt")<P>set fso=createobject("Scripting.FileSystemObject")
  46. set openfile=fso.opentextfile(whichfile,1)
  47. visitors=openfile.readline
  48. openfile.close
  49. CountLen=len(visitors)
  50. response.write "您是本页的第"<P>for i=1 to 6-countLen '暗示最大值999999
  51. response.write "<img src=http://www.webjx.com/htmldata/2005-05-17/img/0.gif></img>"
  52. next
  53. for i=1 to countlen
  54. response.write "<img src=img/" & mid(visitors,i,1) & ".gif></img>"
  55. next
  56. response.write "位访客"visitors=visitors+1
  57. set creatfile=fso.createtextfile(whichfile)
  58. creatfile.writeLine(visitors)
  59. creatfile.close
  60. set fso=nothing
  61. %>
  62. <P>  本法式中采取的是mid函数,该函数的感化是前往某字符串中从第几位<P>字符入手下手的几个字符。格局即为:Mid(string,start,length) <P class=code>
  63. <script language=vbs>
  64. cn_string= "cnbruce love cnrose"
  65. cn_start = 9
  66. cn_length = 4
  67. alert (mid(cn_string,cn_start,cn_length))
  68. </script>[code]学会了FSO提取文件值,也学会了将信息输出到文件中,那上面就再来使用使用下。 <P>  不晓得你有无如许的习气:看到一个文件,不盲目的右键选择用记事本翻开。<P>呵呵,几近没有哪一个文件是不成以的。所以如今,可以默许一切文件都是文本,<P>只是后缀名分歧罢了;那末也就是说,如今可以提取任一文件的内容信息。OK,就来想象一下: <P>  1,提取一个文件的途径(采取file按钮停止查找定位)
  69.   2,将该途径文件翻开,并读取一切行
  70.   3,显示读取的信息 <P>  1、viewcode.asp <P class=code>
  71. <%
  72. Function ShowCode(filename)
  73. Set fso = Server.CreateObject("Scripting.FileSystemObject")
  74. Set cnrs = fso.OpenTextFile(filename, 1)
  75. While Not cnrs.AtEndOfStream
  76. rsline = cnrs.ReadLine
  77. rsline = server.HTMLEncode(rsline)
  78. Response.Write(rsline & "<br>")
  79. Wend
  80. end Function
  81. %><P><form action="viewcode.asp" method="post">
  82. 输出文件名<input type="file" name="filename">
  83. <input type="submit" value="检查源法式">
  84. </form><%
  85. file=request.form("filename")
  86. response.write (file & "源法式以下<hr>")
  87. If trim(file)<> "" then
  88. Call ShowCode(file)
  89. End If
  90. %>
  91. <P>  以上法式调试时,可以选择html,asp页面,也能够翻开任一使用法式等。 <P>  界说的ShowCode函数,次要感化是翻开、读取并显示文件中一切信息内容。<P>注重添加了server.HTMLEncode(rsline),针对含有尺度HTML代码的文件。 <P>  显示文件中一切行即用一前提轮回停止遍历显示了。 <P class=code>
  92. While Not cnrs.AtEndOfStream
  93. ...
  94. Wend
  95. <P>  接着,上面的这个例题详细就触及open办法的成绩了,还记得?正常情形之<P>下翻开文件是采取fso.OpenTextFile("c:\testfile.txt",1),参数1的感化是:<P>以只读形式翻开文件。不克不及对此文件停止写操作。假如如今已存在一文件,<P>需求停止追加写入,则该怎样办呢?复杂,参数为8便可。 <P>  这有甚么用呢?呵呵,亚玛逊的收集故事接龙就是如斯:能接龙就需求起首<P>要显示原有故事,然后本人添加故事写入文件。这个中的写入文件最考究的就是<P>追加写入了。所以上面就能够完成。 <P>  2、story.asp <P>
  96. <%
  97. If not request.Form("NextLine")="" then
  98. Set fso=Server.CreateObject("Scripting.FileSystemobject")
  99. textfile1=Server.MapPath("story.txt")
  100. set cnrs=fso.OpenTextFile(textfile1,8)
  101. cnrs.WriteLine(Request.Form("NextLine"))
  102. cnrs.Close
  103. end if
  104. %>
  105. 故事以下:
  106. <%
  107. Set fso=Server.CreateObject("Scripting.FileSystemObject")
  108. textfile1=Server.MapPath("story.txt")
  109. set cnrs=fso.OpenTextFile(textfile1,1)
  110. while not cnrs.AtEndOfStream
  111. Response.Write " " & cnrs.ReadLine
  112. wend
  113. cnrs.close
  114. %>
  115. <hr>
  116. <form method="post" action="story.asp">
  117. 请输出这个故事的新行:<input name="NextLine" type="text" size="70">
  118. <input type="submit" value="提交">
  119. </form>
  120. <P>  全部就是一很复杂的读守信息和到场信息的夹杂使用,信任有了后面的基本<P>看懂应当不成成绩。固然还短少个story.txt文件,外面写好故事开首就能够了。 <P>  调试<P>  再上面,持续来,该偏重点次要就是实习一些函数的利用技能了。 <P>  1,instr函数:前往某字符串在另外一字符串中第一次呈现的地位。
  121.   好比如今查找字母“A”在字符串“A110B121C119D1861”中第一次呈现的地位,则可以 <P class=code>
  122. <script language=vbs>
  123. my_string = "A110B121C119D1861"
  124. a_num = instr(my_string,"A")
  125. alert(a_num)
  126. </script>
  127.   一样字母“B”的地位也就可以肯定。如今就来最关头的:提早字母“A”和“B”
  128. 两头的值“110”。还记得mid函数吗?mid函数的次要感化是:从字符串中前往指定命目标字符。
  129.   好比如今的“110”则应当是从字符串的第2位获得3个单元的值。
  130. <P class=code>
  131. <script language=vbs>
  132. my_string = "A110B121C119D1861"
  133. a_value = mid(my_string,2,3)
  134. alert(a_value)
  135. </script>
  136.   但假想一下:假如不是“110”,而是“1100”,那是否是要提取4位……如许就
  137. 显出法式的不敷完善。
  138.   所以持续思虑:所提取的值,永久是在字母“A”前面的,且值也永久是在字母
  139. “A”和“B”之间的,
  140. 那末只需分离提掏出“A”、“B”的地位,则两头数值的肇端位应是字母“A”位+1,
  141. 两头数值的长度应
  142. 是字母“B”位-字母“A”位-1
  143.   那末如今就能够让法式完善起来:
  144. <P class=code>
  145. <script language=vbs>
  146. my_string = "A110B121C119D1861"
  147. a_num = instr(my_string,"A")
  148. b_num = instr(my_string,"B")
  149. a_value = mid(my_string,a_num+1,b_num-a_num-1)
  150. alert(a_value)
  151. </script>
  152.   OK,那末如今你也就完整可以把字母“B”、“C”、“D”前面的值逐一提取了。
  153.   固然需求注重的就是“D”前面有几位怎样取呢?采取字符串总长度-字母D地点
  154. 地位数就能够了。
  155. <P class=code>
  156. <script language=vbs>
  157. my_string = "A110B121C119D1861"
  158. a_num = instr(my_string,"A")
  159. b_num = instr(my_string,"B")
  160. c_num = instr(my_string,"C")
  161. d_num = instr(my_string,"D")
  162. total_num = len(my_string)
  163. a_value = mid(my_string,a_num+1,b_num-a_num-1)
  164. b_value = mid(my_string,b_num+1,c_num-b_num-1)
  165. c_value = mid(my_string,c_num+1,d_num-c_num-1)
  166. d_value = mid(my_string,d_num+1,total_num-d_num)
  167. alert(a_value)
  168. alert(b_value)
  169. alert(c_value)
  170. alert(d_value)
  171. </script>
  172.   用到如今,你或许的确学到了很多,但或许会提出疑问:这个放在FSO文件操作
  173. 里有甚么感化呢?
  174.   那上面才是咱们的正题:用FSO停止复杂的文本投票。
  175. <P>  投票页面重要的就是显示各类项目标投票数,并响应赋于某个变量。然后<P>判别本次投票的选相,<P>绝对应地将投票数值加1,终了后再将一切值持续写入文本。 <P>  1,一个HTML表单页website.html
  176.   以做投票点击的平台。 用到如今,你或许的确学到了很多,但或许会提出疑问:这个放在FSO文件操作里
  177. 有甚么感化呢?
  178. 那上面才是咱们的正题:用FSO停止复杂的文本投票。
  179. <P class=code>
  180. <form action="result.asp" method="post">
  181. <input type="radio" name="website" value="A" checked> cnbruce.com<br>
  182. <input type="radio" name="website" value="B"> blueidea.com<br>
  183. <input type="radio" name="website" value="C"> it365cn.com<br>
  184. <input type="radio" name="website" value="D"> 5d.cn<br>
  185. <input type="submit">
  186. <input type="reset">
  187. <P>  2,承受表单页值的result.asp <P class=code>
  188. <%
  189. whichfile=server.mappath("site.txt")
  190. set fso=createobject("Scripting.FileSystemObject")
  191. set thisfile=fso.opentextfile(whichfile)
  192. my_string=thisfile.readline<P>a_num = instr(my_string,"A")
  193. b_num = instr(my_string,"B")
  194. c_num = instr(my_string,"C")
  195. d_num = instr(my_string,"D")
  196. total_num = len(my_string)<P>a_value = mid(my_string,a_num+1,b_num-a_num-1)
  197. b_value = mid(my_string,b_num+1,c_num-b_num-1)
  198. c_value = mid(my_string,c_num+1,d_num-c_num-1)
  199. d_value = mid(my_string,d_num+1,total_num-d_num)<P>select case request.form("website")
  200. case "A": a_value=a_value+1
  201. case "B": b_value=b_value+1
  202. case "C": c_value=c_value+1
  203. case "D": d_value=d_value+1
  204. end selectmynew_string="A" & cstr(a_value) & "B" & cstr(b_value) & "C"
  205. & cstr(c_value) & "D" & cstr(d_value)
  206. set newfile=fso.createtextfile(whichfile)
  207. newfile.writeLine(mynew_string)
  208. newfile.close
  209. set fso=nothing
  210. %>
  211. 以后投票:<br>
  212. cnbruce.com:<%=a_value%><br>
  213. blueidea.com:<%=b_value%><br>
  214. it356cn.com:<%=c_value%><br>
  215. 5d.cn:<%=d_value%><br>
  216. <a href="website.html">前往持续</a>
  217. <P>  有了下面函数的基本,看这个应当不是很难的。 <P>  3,最初不要忘了的记数文件site.txt <P>  格局:A1B1C1D1 <P>  [u]调试[/u]   OK,三个文件就能够胜任一个很复杂的投票体系了,假如要增强,
  218. 需求细化的则联合之前的常识吧,好比投过一次后设置session或cookies,
  219. 当再次投票时分判别假如session或cookies存在则不答应,也就是复杂的投票防作
  220. 假手腕了……固然更多的仍是要本人去想去理论了。
  221. 一,fso.GetFile
  222.   提取文件响应的 File 对象
  223. <P>  1,getfile.asp <P class=code>
  224. <%
  225. whichfile=Server.MapPath("cnbruce.txt")
  226. Set fso = CreateObject("Scripting.FileSystemObject")
  227. Set f1 = fso.CreateTextFile(whichfile,true)
  228. f1.Write ("This is a test.My Name is cnbruce.")
  229. f1.Close
  230. Set f2 = fso.GetFile(whichfile)
  231. s = "文件称号:" & f2.name & "<br>"
  232. s = s & "文件短途径名:" & f2.shortPath & "<br>"
  233. s = s & "文件物理地址:" & f2.Path & "<br>"
  234. s = s & "文件属性:" & f2.Attributes & "<br>"
  235. s = s & "文件巨细: " & f2.size & "<br>"
  236. s = s & "文件类型: " & f2.type & "<br>"
  237. s = s & "文件创立工夫: " & f2.DateCreated & "<br>"
  238. s = s & "比来会见工夫: " & f2.DateLastAccessed & "<br>"
  239. s = s & "比来修正工夫: " & f2.DateLastModified
  240. response.write(s)
  241. %>
  242. <P>  其后果正如右键某文件,看到的详细属性信息。
  243.   个中Attributes前往的数值“32”暗示:(Archive)前次备份后已更改的文件。可读写。 <P>  其它值附录以下: <P class=code>
  244. Normal 0 通俗文件。 没有设置任何属性。
  245. ReadOnly 1 只读文件。 可读写。
  246. Hidden 2 埋没文件。 可读写。
  247. System 4 体系文件。 可读写。
  248. Directory 16 文件夹或目次。 只读。
  249. Archive 32 前次备份后已更改的文件。 可读写。
  250. Alias 1024 链接或快捷体例。 只读。
  251. Compressed 2048 紧缩文件。 只读。
  252.   二,file.move
  253.   感化将指定的文件或文件夹从某地位挪动到另外一地位。其实该办法依然属于
  254. fso.GetFile后的一个使用。
  255. <P>  2,movefile.asp <P>
  256. <%
  257. whichfile=Server.MapPath("cnbruce.txt")
  258. Set fso = CreateObject("Scripting.FileSystemObject")
  259. Set f1 = fso.CreateTextFile(whichfile,true)
  260. f1.Write ("This is a test.My Name is cnbruce.")
  261. f1.Close
  262. Set f2 = fso.GetFile(whichfile)
  263. f2.Move "C:\"
  264. %>
  265. <a href="C:\">检查下有无</a>
  266. <P>
  267.   复杂的剪切粘贴的功效完成。 <P>  三,File.Copy
  268.   一样属于fso.GetFile后的一个使用。就只是纯真地拷贝文件到某地位。 <P>  3,copyfile.asp <P class=code>
  269. <%
  270. whichfile=Server.MapPath("cnbruce.txt")
  271. Set fso = CreateObject("Scripting.FileSystemObject")
  272. Set f1 = fso.CreateTextFile(whichfile,true)
  273. f1.Write ("This is a test.My Name is cnbruce.")
  274. f1.Close
  275. Set f2 = fso.GetFile(whichfile)
  276. f2.Copy "D:\"
  277. %>
  278. <a href="D:\">检查下有无</a>
  279. <P>  和本ASP页面同在目次下的cnbruce.txt文件仍然存在。 <P>  四,file.Delete
  280.   很明显,就是直接删除文件了。 <P>  4,delfile.asp <P class=code>
  281. <%
  282. whichfile=Server.MapPath("cnbruce.txt")
  283. Set fso = CreateObject("Scripting.FileSystemObject")
  284. Set f1 = fso.CreateTextFile(whichfile,true)
  285. f1.Write ("This is a test.My Name is cnbruce.")
  286. f1.Close
  287. Set f2 = fso.GetFile(whichfile)
  288. f2.move "d:\"
  289. Set f3 = fso.GetFile("d:\cnbruce.txt")
  290. f3.delete
  291. %>
  292. <a href="d:\">检查下是没有该文件的</a>
  293.   固然FSO还没有停止,好比上传文件,ASP转HTML等都需求用到FSO。更出色的仍然是在前面。
复制代码
[/code]SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-18 04:16

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表