【问题标题】:jscript (pragma) FSO ReadAlljscript (pragma) FSO ReadAll
【发布时间】:2014-07-31 11:29:09
【问题描述】:

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

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

【问题讨论】:

    标签: jscript fso


    【解决方案1】:

    您可以使用AtEndOfStream Property

    var namestart=fso.OpenTextFile("C:\\name.txt",1);
    var name2 = namestart.AtEndOfStream ? "" : namestart.ReadAll();
    namestart.Close();
    

    【讨论】:

      【解决方案2】:

      您可以检查(现有)文件的 .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
      

      【讨论】:

        猜你喜欢
        • 2017-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多