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