0

我正在尝试使用适用于 Windows 8 App Store 应用程序的 JS API。基本上我有两个按钮,一个调用函数 create(),一个调用函数 open()。该文件已正确创建,但我无法想象如何启动外部应用程序来打开它。

鉴于此代码,主要取自 MSDN 网站...我应该写什么来代替:

//如何启动应用程序来读取文件?

该文件存在,我可以通过 var file = Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri);

但即使是 Windows.System.Launcher.launchFileAsync(file) 也无法正常工作...... :( 有什么帮助吗?

谢谢!!!

 function create() {

 {
        localFolder.createFileAsync("dataFile.txt", Windows.Storage.CreationCollisionOption.replaceExisting)
           .then(function (sampleFile) {
               var formatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
               var timestamp = formatter.format(new Date());

               return Windows.Storage.FileIO.writeTextAsync(sampleFile, timestamp);
           }).done(function () {



           });
    }




        }


function open() {



    localFolder.getFileAsync("dataFile.txt")
      .then(function (sampleFile) {

          if (sampleFile) { console.log("it does exists") }

          return Windows.Storage.FileIO.readTextAsync(sampleFile);
      }).done(function (timestamp) {
          var uri = new Windows.Foundation.Uri('ms-appx:///dataFile.txt');
          var file = Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri);
          //how to launch an app to read the file?
      }, function () {
          console.log("timestamp non trovato");
      });

}
4

1 回答 1

2

你有几件事在这里发生:

  1. 您将 URI 方案用于属于您的应用程序的文件,而不是用于本地文件夹的文件。改用这个

    var uri = new Windows.Foundation.Uri('ms-appdata:///local/dataFile.txt');
    
  2. 您需要使用来自getFileFromApplicationUriAsync的回调,尝试:

    localFolder.getFileAsync("dataFile.txt")
      .then(function (sampleFile) {
    
          if (sampleFile) { console.log("it does exists") }
    
          return Windows.Storage.FileIO.readTextAsync(sampleFile);
      }).done(function (timestamp) {
    
          var uri = new Windows.Foundation.Uri('ms-appdata:///local/dataFile.txt');
          Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri).done(function(file)
          {
              Windows.System.Launcher.launchFileAsync(file);
    
  3. 您实际上不需要在这里创建 Uri,您可以在第一个“then”中启动(但我不确定您的意图,因为您也在那里阅读了文件)。还要注意,您对现有文件的检查并不完全正确。如果文件不存在,您将触发错误处理程序回调,我在下面添加了它以输出到控制台

    localFolder.getFileAsync("dataFile.txt")
      .then(function (sampleFile) {
               Windows.System.Launcher.launchFileAsync(sampleFile);
               return Windows.Storage.FileIO.readTextAsync(sampleFile);
           },
           function () { console.log("it does not exist"); })
      .done(function (timestamp) {
    
          // not sure what you want to do here
    
      }, function () {
          console.log("timestamp non trovato");
      }
    );});
    
于 2012-12-21T12:44:15.927 回答