1

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

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 返回错误。

4

2 回答 2

3

您可以使用AtEndOfStream 属性

var namestart=fso.OpenTextFile("C:\\name.txt",1);
var name2 = namestart.AtEndOfStream ? "" : namestart.ReadAll();
namestart.Close();
于 2014-07-31T14:21:38.900 回答
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
于 2014-07-31T14:13:18.950 回答