我正在运行一个电子应用程序,在其渲染过程中我使用HTML5 localStorage。
我很想知道我的文件系统在这个localStorage实际存储的位置(我相信它是SQLite格式)。
我看到了存储浏览器 localStorage的答案,这里:
Where the sessionStorage and localStorage stored?
我问这个是因为我希望能够运行这个电子应用程序的2个实例,这样每个应用程序都会有不同的设置,我将其保存在localStorage中。
具体来说,我对Windows 10最感兴趣,但包装所有操作系统的答案都很棒。
答案 0 :(得分:7)
它存储在AppData文件夹中,您可以通过查看CAST()
的值找到该文件夹。
这意味着即使删除了应用,数据仍会存在。如果你正在运行两个实例,那么你需要找到一些区分它们的方法,这样它们就不会踩踏彼此的数据。
答案 1 :(得分:2)
我必须在我的Electron应用程序中使用以下命令才能使其正常工作:
my_other_value
但是,存储数据的路径在以下位置:
CREATE UNIQUE INDEX unique_num_and_date
ON foos(my_other_value, date_trunc('day',my_dt));
因此您的整个路径将类似于:
const remote = require('electron').remote;
const app = remote.app;
app.getPath('userData');
日志文件:不是Sqlite DB 即使浏览器(在我的情况下是FireFox)将localStorage数据存储在sqlite文件中,但Electron似乎没有。
相反,它将数据保存在名为\Local Storage\leveldb\
的奇数.log文件中。
这是我从应用程序控制台运行三个localStorage.setItem()命令后的样子。
下面是我运行三个命令的Electron应用程序的控制台。如果仔细查看图像,可以将命令与000003.log文件中的数据匹配。
进一步的证明,这是存储位置/机制
如果我在控制台中运行localStorage.getItem(“ fakeData”),则返回该值。
但是,如果您:
您将没有返回任何值。
现在完成循环:
您将再次看到该值。
LevelDB:Google Thing
我当时正在考虑那种疯狂的格式,然后我想到了最终目录(leveldb)的名称。我做了一个duckduckgo,发现了这个: https://github.com/google/leveldb
所以我猜这是因为Electron使用的是Chrome引擎。
LevelDB是Google编写的开源磁盘键值存储 Jeffrey Dean和Sanjay Ghemawat。受启发 Bigtable,LevelDB根据新的BSD许可证托管在GitHub上,并且 已经移植到各种基于Unix的系统,macOS,Windows, 和Android。