Node.js 文件写入及文件夹交互操作

这篇具有很好参考价值的文章主要介绍了Node.js 文件写入及文件夹交互操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

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()以递归方式删除内容。

{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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • cp命令 复制多个目录/文件夹下文件到指定目录

    可以使用cp命令的通配符和递归选项来复制多个目录下多个文件夹下的文件到指定目录。 如果目标目录不存在,可以使用 mkdir -p命令来创建目录。 -p 选项表示递归创建目录,如果目录已经存在,则不会报错。 例如,以下命令会复制 /path/to/dir1和 /path/to/dir2 下的所有子目录中的

    2024年02月12日
    浏览(44)
  • uniapp安卓读取或写入txt文件,创建文件或文件夹,获取手机内置存储根路径

    原理:利用 H5plus 的 native ,引入 java 类来进行处理。 uniapp开发记录

    2024年02月11日
    浏览(44)
  • 3、HDFS的使用(读写、上传、下载、遍历、查找文件、整个目录拷贝、只拷贝文件、列出文件夹下文件、删除文件及目录、获取文件及文件夹属性等)-java

    1、hadoop3.1.4简单介绍及部署、简单验证 2、HDFS操作 - shell客户端 3、HDFS的使用(读写、上传、下载、遍历、查找文件、整个目录拷贝、只拷贝文件、列出文件夹下文件、删除文件及目录、获取文件及文件夹属性等)-java 4、HDFS-java操作类HDFSUtil及junit测试(HDFS的常见操作以及H

    2024年02月16日
    浏览(38)
  • Linux移动文件和文件夹(目录)命令

    命令mv 英文move 翻译移动 mv命令可以移动文件或文件夹(目录),也可以重命令(覆盖)文件。 1. 移动文件/重命名 单纯地移动某一个文件直接使用: 这个方法也可以用来修改文件的名称。 2. 移动文件夹(目录)下的内容 如要移动某个文件夹下的 某个内容: 即可移走###内容

    2024年02月06日
    浏览(35)
  • python遍历文件夹下的所有子文件夹,并将指定的文件复制到指定目录

    在1文件夹中有1,2两个文件夹 将这两个文件夹中的文件复制到 after_copy中 源文件 复制后: 参考1 源文件 复制后 参考2 如果复制bmp文件就将 suffix = \\\".json\\\" 改为 suffix = \\\".bmp\\\"

    2024年02月11日
    浏览(62)
  • 安卓的工程目录文件夹简单介绍

    当创建了一个安卓工程之后,系统会生成很多文件夹,那么这些文件夹都存放的是什么东西呢? src:存放java代码,有包,有文件。相当于普通java程序的src文件夹。 gen:存放自动生成的文件。R.java存放的是程序的页面、按键、文本等的id。 Android 4.4和Android Private Libaries:安卓

    2024年02月05日
    浏览(40)
  • 【Python】获取指定目录下的文件夹和文件

    我们经常会有对文件做批量处理的需求,获取指定目录下的文件夹和文件(有时需要获取所有文件,即子目录下的文件也需要获取)。Python 中扫描目录有两种方法: os.listdir() os.walk() 建立项目框架如下: 其中, test:项目文件夹名称,含有 aa子文件夹 和 main.py aa:文件夹,含

    2024年02月17日
    浏览(45)
  • 【ubuntu】修改文件夹(目录)及其内部文件的权限

    目录 修改文件夹(目录)及其内部文件的权限 在 Ubuntu 中,你可以使用 chmod 命令来修改文件夹(目录)及其内部文件的权限。下面是一个将文件夹及其内部所有文件的权限都修改为相同权限的示例命令: 其中, permission 是权限设置,表示所需的权限,例如 755 或 777 , fold

    2024年02月03日
    浏览(35)
  • windows共享文件夹(目录)(SMB服务)

    SMB服务,文件共享服务,俗称文件夹(目录)、打印机等共享 windos系统中,文件夹共享需要设置指定用户与密码,通过输入用户和密码进行连接,在设置共享时系统中有Everyone所有人设置,允许所有人直接访问,但是访问基本不成功,所以需要指定用户与密码去进行访问,提

    2024年02月02日
    浏览(46)
  • 用perl查找文件夹中的所有文件和目录

    查找文件夹中的文件和目录是一个很常见的操作,使用perl的File::Find模块可以很方便的实现。首先使用perldoc File::Find 查看一下文档: 这个核心的就是文档中描述的回调函数。我们举一个实际的例子,一个空的git仓库为例,下面的脚本用于查找文件夹中的所有文件: 回调函数中

    2024年02月04日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包