我需要为我要开发的系统创建许多.json文件。为此,我在需要的文件名上运行了一个for循环,然后使用了fs.writeFileSync('filename.json', [data])
。
但是,当稍后尝试打开它们时,以及当我尝试在项目文件夹中找到它们时,都找不到它们。
我尝试使用一个不太复杂的名称进行编写,该名称应该与我的脚本出现在同一目录中,但是这也没有用。据我了解,即使我的文件名不是我期望的,我至少应该在某处得到东西,但是最终我没有任何改变。
我当前的代码如下:
function addEmptyDeparture(date) {
fs.readFileSync(
__dirname + '/reservations/templates/wkend_dep_template.json',
(err, data) => {
if (err) throw err
fs.writeFileSync(
getDepartureFileName(date),
data
)
}
)
}
function getDepartureFileName(date){
return __dirname + '/reservations/' +
date.getFullYear() +
'/departing/' +
(date.getMonth() + 1).toString().padStart(2, "0") +
date.getDate().toString().padStart(2, "0") +
'.json'
}
data
是从fs.readFileSync()返回的JSON对象,并立即写入fs.writeFileSync()。我不认为我需要对此进行分类,因为它已经是一个JSON对象,但是我可能是错的。
我认为它根本不起作用的唯一原因(而不是根本不出现在我的项目中)是在代码的后面部分,我们有以下内容:
fs.readFileSync(
getDepartureFileName(date)
)
.toString()
这是我没有该名称文件的错误。
还值得注意的是,date
是有效的日期对象,因为我能够在小提琴中测试该部分。
fs.writeFile()
的作用是否引起我的误解,或者这不是编写供服务器使用的.json文件的最佳方法?
答案 0 :(得分:0)
我尝试使用带有writeFileSync()的演示创建类似的案例,创建一个不同的文件,并使用for循环向其中添加json数据。就我而言,它有效。每次创建一个新的文件名。这是我的GitHub相同的:-
var fs = require('fs');
// Use readFileSync() method
// Store the result (return value) of this
// method in a variable named readMe
for(let i=0 ; i < 4 ; i++) {
var readMe = JSON.stringify({"data" : i});
fs.writeFileSync('writeMe' + i + '.json', readMe, "utf8");
}
//存储内容并从中读取 //将readMe.txt转换为文件WriteMe.txt
让我知道您是否一直在尝试此操作。
答案 1 :(得分:0)
您可能会忘记对数据进行字符串化处理
fs.writeFileSync('x.json', JSON.stringify({id: 1}))