読み込んでいます...

前面简单的说了一下关于XPCOM的概念以及如何使用XPCOM,现在我们就来看看一下一个社区里面封装的XPCOM类,这个类可以很好的提供给开发人员进行文件的创建,读,写和删除等操作。

有了这个类之后,我们就可以很简单的进行文件的读写操作,具体代码可以看下面。

ReadFile:function(filename)

{

var path = “file path”;

var file = FileIO.Open(path);

var content=FileIO.Read(file);

return content;

}

同样,在写文件的时候,也可以使用我们现有的类进行文件写入,但是值得注意的是,一个好的方法是在写文件的时候判断是否存在这个文件,如果存在就写,如果不存在就创建一个之后再写,以避免一些错误。示例代码如下。

WriteLines:function(content,filename)

{

CreateFile(filename);

var file = FileIO.Open(path);

FileIO.Write(file,content);

}

其中,创建文件的CreateFile可以编写如下,这里我的代码做一个参考。

CreateFile:function(filename)

{

try

{

//create a local file

var file = FileIO.Open(path);

if(!file.exists())

{

var fr = GetProfileDir(); //这个函数有点重要

fr.append(filename);

fr.create(file.NORMAL_FILE_TYPE, 0666);

return false;

}

else

{

//file exists

return true;

}

}

catch(e)

{

return false;

}

}

从上面代码我们可以看出,在这里面有一个非常重要的函数,即GetProfileDir,我们首先需要获取路径,才能够用append方法去创建一个文件。而GetProfileDir方法是用的是XPCOM进行获取的,通常情况下获取的是Firefox的路径,可能不同的浏览器或者不同的版本会有所区别,其中GetProfileDir方法可以编写如下。

GetProfileDir : function()

{

//get the profile dir and add new file

var file = Components.classes["@mozilla.org/file/directory_service;1"].

getService(Components.interfaces.nsIProperties).

get(“ProfD”, Components.interfaces.nsIFile);

file.append(AppConst.CONFIGFILEFOLDER);

if (!file.exists()) file.create(0×01, 0750);

return file;

}

要知道上面的函数为什么这样写,就要去看directory_service的XPCOM提供的API接口了,只有了解了接口,才能够知道返回的是什么内容,或者,你也可以使用alert去弹出内容。

这一节说明很少,代码有点多,主要是基于对XPCOM有一定的理解,如果理解了50%,这里写的应该不难理解,最后奉上这个File类。

file.js (4.27 kb)

323路过 1评论 Firefox Addon 阅读全文..

:-D :-? 8) :cry: 8-O :lol: :-x :-| :?: :-P :oops: :roll: :( :) :-o :wink: more »