我 运行 在日志文件中存储键值对象时遇到了一些麻烦
I'm running into some trouble storing a key-value object in a log file
var FileHasher = require("./FileHasher");
if (process.argv.length < 3) {
console.log("Program file and one argument are required for this program.");
process.exit(1);
}
var filename = process.argv[2];
var fs = require('fs');
var file = fs.readFileSync(filename, "UTF-8"); // get file contents
var data = fs.readFileSync("../sha1.txt", "UTF-8"); // read current key-value pairs
console.log(data); // print all current key-value pairs
var filesha1 = FileHasher(file);
console.log(filesha1);
var object = {
name: filename,
value: filesha1
};
console.log(object);
fs.appendFile("../sha1.txt", JSON.stringify(object), function(err) {
console.log(err);
console.log(object); // prints object so I know it was stored correctly
});
现在一切正常。但是,将对象保存到文本文件时,并没有得到这种格式:
{
"name":"sha1.js",
"value":"6d358b6f267e22e327c1028e79a5c8b200bf453d"
};
我明白了:
{"name":"sha1.js","value":"6d358b6f267e22e327c1028e79a5c8b200bf453d"}
我想更改间距并在保存对象时添加分号。将来我还计划解析此列表以检查文件是否已存在,并在文件的 sha1 更新时更改值的值。指导我如何正确格式化我的代码或对象,或者我应该使用的不同函数,将不胜感激!
这两个东西在解析时是相同的,忽略了分号。 JSON 对象后的分号无效,因此记录之间应该有分号(逗号更合适,如果有的话)。
现在,the JSON.stringify
function 有一些鲜为人知的参数控制白色 space 和其他漂亮的打印功能。看起来你想要 JS 标准的两个 space 缩进,这将是一个像 JSON.stringify(object, null, ' ')
.
这样的调用
要添加分号——你真的不应该这样做——你可以简单地使用字符串连接:
fs.appendFile("../sha1.txt", JSON.stringify(object) + ';\n', function(err) {
这将在 JSON 字符串后添加分号和换行符。由于分号是在序列化后添加的,因此无论行数如何,它都会出现在消息的末尾。
var FileHasher = require("./FileHasher");
if (process.argv.length < 3) {
console.log("Program file and one argument are required for this program.");
process.exit(1);
}
var filename = process.argv[2];
var fs = require('fs');
var file = fs.readFileSync(filename, "UTF-8"); // get file contents
var data = fs.readFileSync("../sha1.txt", "UTF-8"); // read current key-value pairs
console.log(data); // print all current key-value pairs
var filesha1 = FileHasher(file);
console.log(filesha1);
var object = {
name: filename,
value: filesha1
};
console.log(object);
fs.appendFile("../sha1.txt", JSON.stringify(object), function(err) {
console.log(err);
console.log(object); // prints object so I know it was stored correctly
});
现在一切正常。但是,将对象保存到文本文件时,并没有得到这种格式:
{
"name":"sha1.js",
"value":"6d358b6f267e22e327c1028e79a5c8b200bf453d"
};
我明白了:
{"name":"sha1.js","value":"6d358b6f267e22e327c1028e79a5c8b200bf453d"}
我想更改间距并在保存对象时添加分号。将来我还计划解析此列表以检查文件是否已存在,并在文件的 sha1 更新时更改值的值。指导我如何正确格式化我的代码或对象,或者我应该使用的不同函数,将不胜感激!
这两个东西在解析时是相同的,忽略了分号。 JSON 对象后的分号无效,因此记录之间应该有分号(逗号更合适,如果有的话)。
现在,the JSON.stringify
function 有一些鲜为人知的参数控制白色 space 和其他漂亮的打印功能。看起来你想要 JS 标准的两个 space 缩进,这将是一个像 JSON.stringify(object, null, ' ')
.
要添加分号——你真的不应该这样做——你可以简单地使用字符串连接:
fs.appendFile("../sha1.txt", JSON.stringify(object) + ';\n', function(err) {
这将在 JSON 字符串后添加分号和换行符。由于分号是在序列化后添加的,因此无论行数如何,它都会出现在消息的末尾。