首页 > 解决方案 > 使用 appendFileSync 时是否需要指定目录?

问题描述

我正在浏览一些 nodejs 文档并开始熟悉一些更基本的功能。具体看 appendFileSync 函数。

尝试追加文件时,是否需要指定目录?我不记得这是以前版本的 Node 的要求,但似乎在未指定目录时,会在根目录中创建一个新文件,而不是附加该文件。

我只是想附加一个基本的 txt 文件,它会创建一个新文件:

const fs = require('fs');
fs.appendFileSync('notes.txt', 'Changing the text with appendFileSync');

但是,在指定目录时,它会很好地附加文件,让我认为这是必需的:

const fs = require('fs');
fs.appendFileSync('./nodejs/notes-app/notes.txt', ' Colin, changed the 
text with appendFileSync', function (err) {
if (err) throw err; console.log('Notes updated');
});

节点-v 12.13.0

NPM -v 6.12.0

标签: javascriptnode.js

解决方案


fs采用文件路径的所有操作一样,如果您没有指定任何绝对路径,那么您指定的路径将与当前工作目录组合。在 nodejs 程序中,默认的当前工作目录(如果您不以编程方式更改它)取自您启动 node 程序的环境。

如果想直接控制路径而不考虑当前工作目录,则指定绝对路径。

这是fs模块文档中关于文件路径的内容:

字符串形式的路径被解释为标识绝对或相对文件名的 UTF-8 字符序列。相对路径将相对于 process.cwd() 指定的当前工作目录进行解析。

注意:在某些情况下,开发人员希望访问与正在运行的模块的安装相关的文件系统。这通常是通过构建一个相对于__dirname当前模块位置的路径来完成的,就像这样。

path.join(__dirname, "somefile.txt");

当然,如果需要,您始终可以指定从 root 开始的完整路径名。


推荐阅读