当前位置:  开发笔记 > 编程语言 > 正文

javascript可以访问文件系统吗?

如何解决《javascript可以访问文件系统吗?》经验,为你挑选了3个好方法。

我很确定答案是否定的,因此google gear,adobe AIR等.

如果我是对的,那么http://tiddlywiki.com如何运作?它是持久的,用javascript编写.它也只是一个没有外部(服务器端)依赖项的HTML文件.WTF?在哪里/如何存储其状态?



1> Zr40..:

Tiddlywiki有几种保存数据的方法,具体取决于使用的浏览器.正如你在源头中看到的那样.

如果启用了ActiveX,则它使用Scripting.FileSystemObject.

在基于Gecko的浏览器上,它尝试使用UniversalXPConnect.

如果启用了Java,则它使用TiddlySaver Java小程序.

如果启用了Java LiveConnect,它将尝试使用Java的文件类.



2> ebidel..:

HTML5的File [ 1 ],FileWriter [ 2 ]和FileSystem [ 3 ] API可在Google Chrome的最新开发者频道中找到.FileSystem API允许您读取/写入浏览器知道的空间内的沙箱文件系统.例如,您不能在用户的本地FS上打开"我的图片"文件夹并对其进行读/写.这是在起作用的东西,但它暂时还没有准备好.写文件的示例:

window.requestFileSystem(
  TEMPORARY,        // persistent vs. temporary storage
  1024 * 1024,      // 1MB. Size (bytes) of needed space
  initFs,           // success callback
  opt_errorHandler  // opt. error callback, denial of access
);

function initFs(fs) {
  fs.root.getFile('logFile.txt', {create: true}, function(fileEntry) {

    fileEntry.createWriter(function(writer) {  // FileWriter

      writer.onwrite = function(e) {
        console.log('Write completed.');
      };

      writer.onerror = function(e) {
        console.log('Write failed: ' + e.toString());
      };

      var bb = new BlobBuilder();
      bb.append('Lorem ipsum');
      writer.write(bb.getBlob('text/plain'));

    }, errorHandler);
  }
}

查看此HTML5存储幻灯片以获取更多代码段.



3> Rich Bradsha..:

它使用像这样的java文件引用:

drivers.tiddlySaver = {
        name: "tiddlySaver",
        deferredInit: function() {
            if(!document.applets["TiddlySaver"] && !$.browser.mozilla && !$.browser.msie && document.location.toString().substr(0,5) == "file:") {
                $(document.body).append("");
            }
        },
        isAvailable: function() {
            return !!document.applets["TiddlySaver"];
        },
        loadFile: function(filePath) {
            var r;
            try {
                if(document.applets["TiddlySaver"]) {
                    r = document.applets["TiddlySaver"].loadFile(javaUrlToFilename(filePath),"UTF-8");
                    return (r === undefined || r === null) ? null : String(r);
                }
            } catch(ex) {
            }
            return null;
        },
        saveFile: function(filePath,content) {
            try {
                if(document.applets["TiddlySaver"])
                    return document.applets["TiddlySaver"].saveFile(javaUrlToFilename(filePath),"UTF-8",content);
            } catch(ex) {
            }
            return null;
        }
    }

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有