【发布时间】:2018-09-13 19:13:29
【问题描述】:
我想从名为 saveFiles 的文件夹(与 nw.exe 文件和 package.json 文件(清单文件)位于同一目录中)加载 JSON 文件。问题是程序当前将JSON文件保存到C:\Users\userName\AppData\Local\appName\User Data\Default folder。我不知道如何更改目标文件夹。我读到我可以通过调整清单 package.json 文件中的 "chromium-args": "--data-path='' 值来更改它。但我不知道我需要使用什么值才能让它工作。目前 package.json 看起来像这样:
{
"main": "index.html",
"name": "appName",
"chromium-args": "--data-path='./saveFiles/'",
"window":
{
"toolbar": true,
"width": 1600,
"height": 900,
"min_width": 1000,
"min_height": 500,
"fullscreen": true,
"title":"App Name"
}
}
我尝试了几种变体以使其正常工作:--data-path='./saveFiles/'、--data-path='/saveFiles/'、--data-path='saveFiles/',但都没有成功。我的格式错了吗?我应该使用"chromium-args": "--data-path=''"?以外的其他东西吗?是否有不同的方法来更改保存位置/目录?我不知道如何更改它以使其正常工作。
更多信息:
当我保存 JSON 文件时,我使用以下代码:
var fs = require('fs');
var path = require('path');
function saveSettings (settings, callback) {
var file = 'testSave.json';
var filePath = path.join(nw.App.dataPath, file);
fs.writeFile(filePath, settings, function (err) {
if (err) {
console.info("There was an error attempting to save your data.");
console.warn(err.message);
return;
} else if (callback) {
callback();
}
});
}
var mySettings = {
color:'red',
secondaryColor:'blue'
}
mySettings = JSON.stringify(mySettings);
saveSettings(mySettings, function () {
console.log('Settings saved');
});
这可以将文件保存到 C:\Users\userName\AppData\Local\appName\User Data\Default 文件夹,但我想将其保存到 saveFiles 文件夹(与清单文件位于同一位置( package.JSON)和 nw.exe 文件(与 package.json 位于同一文件夹中))。
加载 JSON 文件的加载函数如下所示:
function testLoadFunc(){
path = require('path');
var xmlhttp = new XMLHttpRequest();
var url = "saveFiles/testSave.json";
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var loadedSettings = JSON.parse(this.responseText);
console.log('color: ' + loadedSettings.color);
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
testLoadFunc(); //Loads json file
这会正确加载文件,但我必须手动将 testSave.json 文件放入 saveFiles 文件夹。我想自动将 testSave.json 保存到 saveFiles 文件夹中。因此,我试图找出如何更改保存位置/目录。
另一种选择是弄清楚如何从当前保存位置C:\Users\userName\AppData\Local\appName\User Data\Default 加载文件,但我也不知道该怎么做。最好的选择是将保存位置更改为 saveFiles 文件夹。
感谢您提供的任何帮助。
【问题讨论】:
-
你愿意使用 fs 模块来解决这个问题吗?我问的原因是因为如果你需要('fs),你可以很容易地用 writeStream 做到这一点,因为你已经在使用节点,你不应该安装任何东西。这是一个链接:nodejs.org/api/fs.html。如果您愿意,我可以将其表述为真正的答案。
-
一个答案会很棒!我不知道如何使用 fs 模块或 writeStream,所以如果你能解释一下,我将不胜感激。 @亚历山大格里芬
标签: javascript json nw.js