jscript(pragma)FSO ReadAll

时间:2014-07-31 11:29:10

标签: jscript fso

我正在尝试打开具有读取权限的文件

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返回错误时,这不起作用。

2 个答案:

答案 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
相关问题