我正在运行一个电子应用程序,在其渲染过程中,我使用HTML5 localStorage。
我很想知道这个localStorage实际存储在我的文件系统中的什么位置(我相信它是SQLite格式的)。
我看到了浏览器localStorage存储在哪里的答案,在这里:Where the sessionStorage and localStorage stored?
我问这个问题是因为我希望能够运行这个电子应用程序的2个示例,这样每个应用程序将有不同的设置,我保存在localStorage中。
具体来说,我最感兴趣的是windows 10,但一个 Package 所有操作系统的答案将是伟大的。
3条答案
按热度按时间2uluyalo1#
它存储在AppData文件夹中,您可以通过查看
require('electron').app.getPath('userData')
的值找到该文件夹。这意味着即使应用被删除,数据也会持续存在。如果您正在运行两个示例,则需要找到某种方法来区分它们,以便它们不会践踏彼此的数据。
h9a6wy2h2#
我不得不在我的Electron应用程序中使用以下内容来让它工作:
字符串
但是,它存储数据的路径是:
型
所以你的整个路径看起来像这样:
型
日志文件:不是Sqlite DB即使浏览器(在我的情况下是FireFox)将localStorage数据存储在sqlite文件中,但Electron似乎没有。
相反,它将数据保存在一个名为
000003.log
的奇怪的.log文件中。下面是我从应用程序的控制台运行三个localStorage.setItem()命令后的结果。
x1c 0d1x的数据
下面是我运行这三个命令的Electron应用程序的控制台,如果你仔细观察图像,你可以将命令与000003.log文件中的数据相匹配。
的
进一步证明这是存储位置/机制
如果我在控制台中运行localStorage.getItem(“fakeData”),则返回值。
但是,如果您:
1.关闭Electron应用程序(必须关闭应用程序,因为它已锁定日志文件)
1.删除(或移动)000003.log文件(或您的任何名称)
1.再次启动Electron应用程序
1.打开控制台
1.调用localStorage.getItem(“fakeData”)
你不会得到任何值返回。
现在完成循环:
1.停止您的Electron应用程序
1.将日志文件复制回leveldb\目录(必须覆盖上次启动时创建的文件)
1.启动Electron应用程序
1.打开控制台
1.再次运行localStorage.getItem()。
你会再次看到价值。
LevelDB:Google Thing
我正在考虑这个疯狂的格式,然后我想到了最后一个目录的名称(leveldb)。
所以我猜这是格式,因为电子是使用Chrome引擎。
From Wikipedia:
LevelDB是一个开源的磁盘键值存储,由Google研究员Jeffrey Dean和Sanjay Ghemawat编写。受Bigtable的启发,LevelDB托管在GitHub上,遵循新BSD许可证,并已移植到各种基于Unix的系统,macOS,Windows和Android。
kkbh8khc3#
使用此代码,您可以向
Help
部分添加一个子部分,当单击时,它将在文件浏览器中打开Local Storage文件夹。在
/electron
中的main.js
中:字符串