目录
1、文件写入
1.1 同步写入文件
1.2 将内容追加到文件
2、文件夹交互
2.1 检查文件夹是否存在
2.2 创建新文件夹
2.3 读取目录内容
2.4 重命名文件夹
2.5 删除文件夹
1、文件写入
在Node.js中写入文件最简单的方法是使用fs.writeFile()API。
const fs = require('fs');
const content = 'Some content!';
fs.writeFile('/Users/joe/test.txt', content, err => {
if (err) {
console.error(err);
}
// file written successfully
});
1.1 同步写入文件
您可以使用同步版本fs.writeFileSync():
const fs = require('fs');
const content = 'Some content!';
try {
fs.writeFileSync('/Users/joe/test.txt', content);
// file written successfully
} catch (err) {
console.error(err);
}
您还可以使用fs/promises模块提供的基于promise的fsPromises.writeFile()方法:
const fs = require('fs/promises');
async function example() {
try {
const content = 'Some content!';
await fs.writeFile('/Users/joe/test.txt', content);
} catch (err) {
console.log(err);
}
}
example();
默认情况下,如果文件已经存在,则此API将替换文件的内容。
您可以通过指定标志来修改默认值:
fs.writeFile('/Users/joe/test.txt', content, { flag: 'a+' }, err => {});
标志 |
描述 |
不存在则创建 |
r+ |
此标志打开文件进行读取和写入 |
X |
w+ |
此标志打开文件进行读取和写入,并将流定位在文件的开头 |
v |
a |
这个标志打开文件进行写入,它还将流定位在文件的末尾 |
v |
a+ |
这个标志打开文件进行读写,它还将流定位在文件的末尾 |
v |
1.2 将内容追加到文件
将内容附加到文件末尾的一个方便方法是fs.appendFile()(及其对应的fs.appentFileSync()):
const fs = require('fs');
const content = 'Some content!';
fs.appendFile('file.log', content, err => {
if (err) {
console.error(err);
}
// done!
});
下面是一个fsPromises.appendFile()示例:
const fs = require('fs/promises');
async function example() {
try {
const content = 'Some content!';
await fs.appendFile('/Users/joe/test.txt', content);
} catch (err) {
console.log(err);
}
}
example();
2、文件夹交互
2.1 检查文件夹是否存在
使用fs.access()(及其基于promise的对应文件fsPromises.access())检查文件夹是否存在,Node.js是否可以使用其权限访问该文件夹。
标志 |
描述 |
F_OK |
指示文件对调用进程可见的标志。这对于确定文件是否存在很有用,但没有说明rwx权限。如果未指定模式,则为默认值。 |
R_OK |
指示调用进程可以读取文件的标志。 |
W_OK |
指示调用进程可以写入文件的标志。 |
X_OK |
指示该文件可以由调用进程执行的标志。这对Windows没有影响(其行为类似于fs.constants.F_OK)。 |
import { access, constants } from 'node:fs';
const file = 'package.json';
// 检查文件,是否存在当前目录
access(file, constants.F_OK, (err) => {
console.log(`${file} ${err ? 'does not exist' : 'exists'}`);
});
// 检查文件是否可读.
access(file, constants.R_OK, (err) => {
console.log(`${file} ${err ? 'is not readable' : 'is readable'}`);
});
// 检查文件是否可写.
access(file, constants.W_OK, (err) => {
console.log(`${file} ${err ? 'is not writable' : 'is writable'}`);
});
// 检查文件是否可读并可写.
access(file, constants.R_OK | constants.W_OK, (err) => {
console.log(`${file} ${err ? 'is not' : 'is'} readable and writable`);
});
2.2 创建新文件夹
可使用fs.mkdir()、fs.mkdirSync()或fsPromises.mkdir()创建新文件夹。
const fs = require('fs');
const folderName = '/Users/joe/test';
try {
if (!fs.existsSync(folderName)) {
fs.mkdirSync(folderName);
}
} catch (err) {
console.error(err);
}
2.3 读取目录内容
使用fs.readir()、fs.readirSync()或fsPromises.readdir()读取目录的内容。
这段代码读取文件夹的内容,包括文件和文件夹:
const fs = require('fs');
const folderPath = '/Users/joe';
fs.readdirSync(folderPath);
返回它们的绝对路径:
fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName);
});
您也可以过滤结果以仅返回文件,并排除文件夹:
const isFile = fileName => {
return fs.lstatSync(fileName).isFile();
};
fs.readdirSync(folderPath)
.map(fileName => {
return path.join(folderPath, fileName);
})
.filter(isFile);
2.4 重命名文件夹
使用fs.rename()、fs.renameSync()或fsPromises.rename()重命名文件夹。第一个参数是当前路径,第二个参数是新路径:
const fs = require('fs');
fs.rename('/Users/joe', '/Users/roger', err => {
if (err) {
console.error(err);
}
// done
});
fs.renameSync()是同步版本:
const fs = require('fs');
try {
fs.renameSync('/Users/joe', '/Users/roger');
} catch (err) {
console.error(err);
}
fsPromises.rename()是基于promise的版本:
const fs = require('fs/promises');
async function example() {
try {
await fs.rename('/Users/joe', '/Users/roger');
} catch (err) {
console.log(err);
}
}
example();
2.5 删除文件夹
使用fs.rmdir()、fs.rmdirSync()或fsPromises.rmdir()删除文件夹。
const fs = require('fs');
fs.rmdir(dir, err => {
if (err) {
throw err;
}
console.log(`${dir} is deleted!`);
});
要删除包含内容的文件夹,请使用带有选项{recursive:true}的fs.rm()以递归方式删除内容。文章来源:https://www.toymoban.com/news/detail-463547.html
{recursive:true,force:true}使其在文件夹不存在时忽略异常。文章来源地址https://www.toymoban.com/news/detail-463547.html
const fs = require('fs');
fs.rm(dir, { recursive: true, force: true }, err => {
if (err) {
throw err;
}
console.log(`${dir} is deleted!`);
});
到了这里,关于Node.js 文件写入及文件夹交互操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!