Chrome App文件I / O问题

时间:2014-06-30 06:02:33

标签: javascript node.js google-chrome-app browserify

我尝试使用pdf.js和node.js(fs通过browserify)将pdf加载到离线Chrome应用中。

我的问题是文件路径。我尝试使用以下代码进行简短测试:

var fs = require('browserify-fs');

fs.mkdir('/home', function() {
    fs.writeFile('/home/hello-world.txt', 'Hello world!\n', function() {
        fs.readFile('/home/hello-world.txt', 'utf-8', function(err, data) {
            console.log(data);
        });
    });
});

它的行为与它应有的完全相同。在控制台上,我读了“Hello world!'”。 我的第一个问题:我有没有创建文件的任何想法?!?!我已经在我的硬盘上完成了搜索但无法找到 hello-world.txt 。 browserify-fs在哪里视为root?

其次,我尝试了另一项测试,使用了一些Chrome的I / O和node.js。

var fs = require('browserify-fs');
var path;

chrome.fileSystem.chooseEntry({'type': 'openFile'},
function( entry,  fileEntries) {
  chrome.fileSystem.getDisplayPath(entry, function(displayPath){ 
    path = displayPath;
    console.log(path);
    fs.appendFile(path, 'data to append', function (err) {
      if (err) throw err;
      console.log('The "data to append" was appended to file!');
    });
  });
});

正如所料,Chrome会提示我选择一个文件。选择后,它会打印到控制台的正确文件路径(例如"~/Downloads/foo.txt")。但此时,fs.appendFile()无法找到该位置。所以,我想,也许它需要从root开始的路径。所以我手动传递了'/home/chronos/user/Downloads/foo.txt',而fs.appendFile()仍无法找到该文件。

所以,整个帖子是一个冗长的方式,询问节点的fs模块如何处理路径,以及当我使用browserify时根目录所在的位置。

感谢。

1 个答案:

答案 0 :(得分:0)

您的第一个问题似乎是关于我不熟悉的browserfy-fs,而不是关于Chrome应用程序。您显示的代码不使用任何Chrome App API。

您的第二个问题显示了selectEntry为其回调提供FileEntry对象的代码,以及您需要使用适当的API(Google" FileEntry API" )。再次,将路径传递给browserfy-fs可能会或可能不会做任何有用的事情,但无论它做什么或不做什么都是browserfy-fs问题,而不是Chrome App问题。

您是否有理由尝试使用browserfy-fs在Chrome应用中执行文件I / O?