我正在尝试打开具有读取权限的文件
var namestart=fso.OpenTextFile("C:\\name.txt",1);
var name2=namestart.ReadAll();
namestart.Close();
但是这个文件并不总是充满了东西,当文件为空时,ReadAll会出错,因为(当然)它无法读取文件中的内容并返回错误。有什么方法可以捕捉到这个错误吗?
var namestart=fso.OpenTextFile("C:\\naam.txt",1);
var name2="";
if(namestart.ReadAll() != ""){
name2=namestart.ReadAll();
}
namestart.Close();
当ReadAll返回错误时,这不起作用。
答案 0 :(得分:3)
您可以使用AtEndOfStream Property。
var namestart=fso.OpenTextFile("C:\\name.txt",1);
var name2 = namestart.AtEndOfStream ? "" : namestart.ReadAll();
namestart.Close();
答案 1 :(得分:1)
您可以检查(现有)文件的.Size或使用try / catch来处理不存在的(如下面的代码中)和零长度文件。
var oFS = new ActiveXObject("Scripting.FileSystemObject");
var aFiles = ".\\25057783.js .\\empty.txt .\\nothere.nix".split(/ /);
for (var iFile in aFiles) {
var sFile = aFiles[iFile];
WScript.Echo("----", sFile)
try {
var oFile = oFS.GetFile(sFile);
if (0 < oFile.Size) {
var sContent = oFile.OpenAsTextStream().ReadAll();
WScript.Echo(" got content")
} else {
WScript.Echo(" file is empty");
}
}
catch(e) {
WScript.Echo(" Bingo:", e.message);
}
}
输出:
cscript 25057783.js
---- .\25057783.js
got content
---- .\empty.txt
file is empty
---- .\nothere.nix
Bingo: File not found