node-file 文件处理方法

node

node-file

前提

  • 引入模块

    import fs from 'fs'; // 异步
    import fsp from 'fs/promises'; // 可以通过promise做同步
    

1.创建文件夹

- 异步
// 创建文件夹的目录 ,如果有改文件夹报异常
fs.mkdir('./img', function (err) {
  console.log(err);
});
- 同步方法
// 创建文件夹的目录 ,如果有改文件夹报异常
async function init() {
  var err;
  await fsp
    .mkdir('./img')
    .then()
    .catch((err) => err);
}

2.删除文件夹

- 异步
// 删除文件夹的目录 ,如果没有该文件夹报异常
fs.rmdir('./img', function (err) {
  console.log(err);
});
- 同步方法
// rmdirSync 是同步的 rmdir
fs.rmdirSync('./img', function (err) {
  console.log(err);
});

3.读取目录和文件信息

- 异步方法
// stat信息对象
fs.stat('./js/Main.js', function (err, stat) {
  console.log(err, stat);
  console.log(stat.isFile()); // 判断是否是文件
  console.log(stat.isDirectory()); // 判断是否是目录
});
- 同步方法
async function init() {
  var stat = await fsp.stat('./js/Main.js');
  if (stat.isFile()) {
    // 如果是文件,则输出 1
    console.log(1);
  }
}
- 例
  • 判断该路径是否是文件,下面例子是实用 ts 写的,冒号后边的是前面变量的数据类型
function judgeFile(_path: string): Promise<boolean | null> {
  return new Promise((resolve, reject) => {
    fs.stat(_path, (err: NodeJS.ErrnoException | null, stats: fs.Stats) => {
      if (err) resolve(null);
      else {
        resolve(stats.isFile());
      }
    });
  });
}

// 调用
async function init() {
  var bool = await judgeFile('./img/');
  console.log(bool);
}

3. 补 读取目录

  • 返回值是目录数组
fs.readdir(path.resolve(),function(arr,file){
	console.log(file)
	/*[
	  'cheese.log',
	  'js',
	  'node_modules',
	  'package-lock.json',
	  'package.json',
	  'text',
	  'ts',
	  'tsconfig.json'
	]*/
})

4.读取文件

  • 当前根路径
    path.resolve()
  • 异步读取文件.注意地址中会有转义字符,所以\使用的时候要多敲一个
- 异步方法
  • 方法一
fs.readFile('./text/a.txt', 'utf8', function (err, data) {
  console.log(err);
  console.log(data + '');
});
  • 方法二
fs.readFile('./logs/log-0.txt', 'utf-8').then((result) => {
  console.log(result);
});
- 同步读取
  • 方法一
fs.readFileSync('E:\\test\\test10\\server\\config.json', 'utf8');
  • 方法二
async function init() {
  var txt = (await fsp.readFile('./text/a.txt')) + '';
  console.log(txt);
}

5.将数据写入一个文件

  • 如果文件中有数据就是替换,没有就是新增
- 异步写入
// 写入文件路径,写入内容
fs.writeFile('./text/c.txt', '1234567989', function (err) {
  console.log(err);
});
- 同步写入
async function init() {
  var bool = await fsp.writeFile('./text/c.txt', '77777777', 'utf8');
  console.log(bool);
}
- 案例 *- 读取写入文件,案例
  • 将一个文件夹中的文件,拷贝一份放入新创建的文件夹
async function init() {
  //获取要拷贝的文件的目录
  var list: Array<string> = await fsp.readdir('./text');
  for (var i = 0; i < list.length; i++) {
    // 读取每个文件中的内容
    var data = (await fsp.readFile(path.join('./text/', list[i]), 'utf8')) + '';
    // 判断是否有新建的文件夹,没有就新建一个
    if (!(await judgeDir('./a'))) await fsp.mkdir('./a');
    // 将新建的文件夹写入到新建的文件夹中
    await fsp.writeFile(path.join('./a', list[i]), data, 'utf8');
  }
}

// 判断是否是文件的方法,,上面有写过
function judgeDir(src: string): Promise<boolean> {
  return new Promise(function (resolve, reject) {
    fs.stat(src, function (err, stat) {
      if (err) resolve(false);
      else if (stat.isFile()) resolve(false);
      else resolve(true);
    });
  });
}

6.追加

  • 向文件尾部增加新数据,如果该文件不存在就会创建一个新文件
- 异步方法
fs.appendFile('./server/data/a.txt', '新增的内容', function (error) {
  console.log(error);
});
- 同步方法
async function animation() {
  fsp.appendFile('./text/a.txt', n.toString(), 'utf8');
}
- 案例,日志文件
  • 这里需要用到一个模块 log4js
    • 首先引入
      import log4js from 'log4js';
log4js.configure({
  appenders: { cheese: { type: 'file', filename: 'cheese.log' } },
  categories: { default: { appenders: ['cheese'], level: 'error' } },
});

// 写入日志文件的方法
var logger = log4js.getLogger('cheese');
logger.level = 'debug';

setInterval(function () {
  logger.debug(path.resolve() + '---Main.ts---141');
}, 3000);

7.修改文件名

fs.rename('./text/a.txt', './text/ab.txt', function (err) {
  console.log(err);
});

8.删除文件

fs.unlink('./text/ab.txt', function (err) {
  console.log(err);
});

9.监听

fs.watch('./text/b.txt', 'utf8', function (event, filename) {
  console.log(event, filename);
});

10.读取流和写入流

fs.createReadStream('./text/c.txt').pipe(fs.createWriteStream('./text/b.txt'));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Rollup 是一个 JavaScript 模块打包器,它可以将多个模块合并成单个文件。它可以帮助你将你的代码打包成可以在浏览器中运行的文件。 要使用 Rollup 处理 .node 文件,你需要使用一个 Rollup 插件,如 rollup-plugin-node-resolve 插件。这个插件可以帮助 Rollup 解析和打包你的 .node 文件,使其能够在浏览器中运行。 下面是一个示例配置文件,它使用 rollup-plugin-node-resolve 插件来处理 .node 文件: ``` import nodeResolve from 'rollup-plugin-node-resolve'; export default { input: 'src/index.js', output: { file: 'dist/bundle.js', format: 'iife', }, plugins: [ nodeResolve({ extensions: ['.js', '.node'], }), ], }; ``` 在这个配置中,nodeResolve 插件会帮助 Rollup 解析 .node 文件。你可以在命令行中使用以下命令来执行打包: ``` rollup -c rollup.config.js ``` 打包后,你就可以在浏览器中使用你的代码了。 ### 回答2: Rollup是一种用于打包JavaScript代码的工具,它最初设计用于在Web上运行的构建过程中使用。然而,Rollup也对Node.js环境提供了支持,并可以处理`.node`文件。 在处理`.node`文件时,Rollup会将其视为可执行二进制文件,并且不会对其进行任何转换或编译。这意味着`.node`文件将被保留为原始状态,并沿着打包后的代码一起使用。 在配置Rollup时,我们需要指定如何处理`.node`文件。通常,我们会使用`rollup-plugin-node-builtins`和`rollup-plugin-node-globals`插件来处理`.node`文件。这两个插件会模拟Node.js环境中的内置模块和全局对象,并将它们应用于构建过程中的代码。 具体而言,`rollup-plugin-node-builtins`插件将Node.js环境中的内置模块(如`fs`和`path`等)注入到打包后的代码中。而`rollup-plugin-node-globals`插件则将Node.js环境中的全局对象(如`global`和`process`等)注入到打包后的代码中。通过这两个插件的协作,我们可以在使用Rollup打包时,正确处理`.node`文件所依赖的Node.js模块和全局对象。 总结来说,Rollup可以通过使用`rollup-plugin-node-builtins`和`rollup-plugin-node-globals`插件来处理`.node`文件。这样,我们就可以在使用Rollup打包Node.js代码时,正确注入和处理`.node`文件所依赖的模块和全局对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值