1. 程式人生 > >FSO出現輸入超出了檔案尾的解決辦法[ASP]

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