XUL程序中访问文件,非常简单,非常痛苦

来源:互联网 发布:java语言书籍推荐 知乎 编辑:程序博客网 时间:2024/05/21 11:32
先贴上短短的代码。。。

function useFile () {
    var a_in_name  = CQI('@mozilla.org/file/local;1',Ci.nsILocalFile);
    var a_out_name = CQI('@mozilla.org/file/local;1',Ci.nsILocalFile);
    var a_in_stream  = CQI('@mozilla.org/network/file-input-stream;1',Ci.nsIFileInputStream);
    var a_out_stream = CQI('@mozilla.org/network/file-output-stream;1',Ci.nsIFileOutputStream);
    var js_in  = CQI('@mozilla.org/scriptableinputstream;1',Ci.nsIScriptableInputStream);
   
    a_in_name.initWithPath('D://js.txt'); //读取js.txt
    a_out_name.initWithPath('D://js2.txt'); //写到js2.txt
    a_out_name.create(Ci.nsIFile.NORMAL_FILE_TYPE, 7);
    a_in_stream.init(a_in_name, 4, 0, 0);
    a_out_stream.init(a_out_name, 4, 0, 0);
    js_in.init(a_in_stream);

    var o  = js_in.read(200);
    a_out_stream.write(o,o.length);
   
    js_in.close();
    a_out_stream.close();
}

程序功能很简单,从js.txt文件里面最多读200个字符,然后全部写到js2.txt里面。。。
如果像区区一样用Perl/Python/TCL/或者哪怪是C++或者C,使用标准库都不会这么冗长啊。。
不知道读者你知道不知道有什么简单的方法实现这么个简单的IO,不要说用程序库,这个下面区区会讲到。


上面的文件IO操作功能,在区区的认知当中,只有Java版的啰嗦程序可以与之相当。。
而且上面的程序还是不能在其它机器上运行的,因为CQI是区区写的一个简化函数,Ci是区区写的简化变量。

不然你的程序可能是这个样子。

var a_in_name  = CQI('@mozilla.org/file/local;1',Ci.nsILocalFile);
==============>
var a_in_name = Components.classes['@mozilla.org/file/local;1']
.createInstance(Components.interfaces.nsILocalFile);

现在再回想一下,你我只是想读写一下文件而已啊~~

那用XULrunner框架开发是否就会很痛苦呢??…………一开始是,万事开头难。变换语言或者平台有一个
起步期,在此期间,要学习和逐步型成知识库/文档库/经验库,这时你才能享用这个平台最初的各种优点。

var Cc = Components.classes;就是一个很好的例子。







原创粉丝点击