FSO出现输入超出了文件尾的解决办法[ASP]
最近在用fso,读取txt文本文件的内容时碰到了“输入超出了文件尾 ”的运行错误,当txt中的内容为空的时候就出现这个问题了,查了下是ReadAll的用法问题,特地转来与大家分享。
解决方法一(from:9enjoy.com)
Function getfile(filename)
dim f
if fso.fileExists(server.MapPath(filename)) then
set f = fso.OpenTextFile(server.MapPath(filename))
Response.write f.ReadAll
set f = nothing
end if
End Function
调用时出现错误:
Microsoft VBScript 运行时错误 错误 ‘800a003e‘
输入超出了文件尾
就是Response.write f.ReadAll这句。
这是一段读取已经存在的文件,并输出文件内容的函数。但当这个文件没有内容时,就会出这种错误提示。
查了文档,ReadAll不会自己判断是否到文件尾,只好,加了个atendofstream的判断语句,测试OK。
更改后的代码为
Function getfile(filename)
dim f
if fso.fileExists(server.MapPath(filename)) then
set f = fso.OpenTextFile(server.MapPath(filename))
if not f.atendofstream then
Response.write f.ReadAll
end if
set f = nothing
end if
End Function
解决方法二( form 秋浦河畔):
Function ReadTemplate(TemplateName)
Dim objFSO,objMyFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objMyFSO = objFSO.OpenTextFile(Server.MapPath(TemplateName),1,True) ‘读取文本文件
ReadTemplate = objMyFSO.ReadAll&info() ‘textStream对象的readAll方法,读取全部文件并返回结果字符串
objMyFSO.Close
Set objMyFSO = Nothing
Set objFSO = Nothing
End Function
如果内容不存在,则会出现“输入超出了文件尾”错误,解决方法:传递真实参数即可,或者不确定的话先判断文件是否存在再执行。
例如:
set copyss=fso.OpenTextFile(path,1)
Set f = fso.GetFile(path)
intSizeB = f.Size
if intsizeb>0 then
copystring = copyss.ReadAll
end if
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。