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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值