我开发了一个Firefox附加组件,需要在本地计算机中保存一些用户数据。现在,我使用Firefox提供的文件系统功能在用户系统中创建一些文件夹和文件。
便携性是一个问题。我为Windows XP设计了它。但是,Vista的文件夹结构不同(在app数据中)。 Linux完全不同。我做了OS检查并相应地创建/读/写文件。突然间,我需要支持Mac!
我想为什么不在Firefox首选项中保存数据。我将使用Preference Manager。
平均而言,数据总量几乎不会超过100KB。但问题是,在极少数情况下,数据可能会变得非常大 - 在最坏的情况下几兆。那么,将它保存为偏好值是一个好主意吗?
我知道这不是它的意思,但它会给我带来很多麻烦。
即使这是一个坏主意,只要让我知道在偏好中存储这么多数据的性能或其他问题(如果有的话)。
感谢。
答案 0 :(得分:6)
使用较新版本的Firefox,您可以使用SQLite to store data。 JavaScript中的SQLite API并不是非常好,但是从Firefox 3.6开始变得非常可靠(异步获取数据,绑定多组数据等)。
您可以使用以下代码在配置文件目录中打开/创建文件。它适用于Firefox运行的所有平台:
var file = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get("ProfD", Components.interfaces.nsIFile);
file.append("my_db_file_name.sqlite");
答案 1 :(得分:1)
可以通过代码找到firefox的profile或extensions目录。您甚至可以找到自己扩展的目录。使用这种方法,便携性不应成为问题。
您可以在MDC (File I/O)找到说明。
我不建议在首选项中保存数据。无论如何,你可以查看sqlite-databases而不是使用裸文件i / o,ubiquity也会使用它们。
干杯。