node的fs模块基础

1.运行脚本

安装好nodejs环境,新建一个test.js文件

let  h = 'hello world'
console.log(h)

文件输出-在终端打印:

 node .\test.js

2.模块机制

在node环境中运行结果为 {} --(空对象)
在目录下新建test1.js和test2.js
test1.js示例:

// 如果test2.js没有写module.exports或者exports
let res = require('./test2.js');
console.log(res); // 输出结果是{}

exports
test2.js如果写如下内容

exports.testFunc = function (a,b) {
    return a + b
}
exports.str = '您好外星人'

那么访问test1.js输出如下:

let res = require('./test2.js');
console.log(res); // 输出结果 { testFunc: [Function], str: '您好外星人' }

module.exports
新建test3.js,输入内容如下:

module.exports = "您好,火星人"

module.exports = function(){
    return "你好,太阳人"
}

在test1.js继续使用require引入:

let res2 = require('./test3.js');
console.log(res2) // 如果test3只有一个第一个module.exports,就输出: 您好,火星人 但是在加上第二个module.exports,就会被覆盖,直接输出Function
console.log(typeof res2 === 'function' && res2()) // 你好,太阳人

使用module.exports导出多个变量或者函数,比如新建一个test4.js,内容如下:

const num = 190000
const myFunc = (a,b) => {
    return a * b
}
module.exports={
    num,
    myFunc
}

在测试test1.js调用

let res = require('./test4.js');
console.log(res) // { num: 190000, myFunc: [Function: myFunc] }

3.文件操作fs模块

读取文件

const fs = require("fs")

// 读取操作
// readFileSync-同步,堵塞模式
const input = fs.readFileSync("contents.txt", "utf8")
console.log(input)

// readFile-异步读取
fs.readFile("contents.txt", "utf8",function(err,data) {
    if (err) throw err;
    console.log(data)
})

写入文件

const fs = require("fs")

//writeFile异步写入文件
fs.writeFile('writeTest.txt','writeFile写入的内容',(err,data)=>{
	if(err) throw err;
	console.log('写入成功', data); // 写入成功 undefined
})
//writeFileSync-同步
fs.writeFileSync('writeTest1.txt','writeFileSync同步写入')    


//writeFile异步写入文件对于引用类型一般都使用json存储,不然出现在读取容易出现乱码
const arr = [
    {
        name: 'Tyler Bennett',
        age: 39
    }
]
fs.writeFile('writeTest.txt',JSON.stringify(arr),'utf8',(err,data)=>{
    console.log(err,data)
})

删除文件

const fs = require( 'fs' );

//异步操作删除writeTest1.txt
fs.unlink('writeTest1.txt',(err,data)=>{
	if (err) {
		console.log(err);
	} else{
		console.log('删除文件成功');
	}
})

//同步操作删除writeTest.txt2
fs.unlinkSync('writeTest2.txt2');

创建文件

const fs = require('fs');

//异步创建文件夹
fs.mkdir('./mkdirTest',(err,data)=>{
	if (err) {
		console.log(err);
	} else{
		console.log('文件夹创建成功');
	}
})

//同步创建文件夹
fs.mkdirSync('./mkdirSyncTtest');

删除文件夹

const fs = require( 'fs' );

//异步删除文件夹
fs.rmdir('mkdirSyncTtest',(err,data)=>{
	if (err) {
		console.log(err);
	} else{
		console.log('删除mkdirSyncTtest文件夹成功');
	}
})

//同步删除文件夹
fs.rmdirSync('mkdirTest');

判断目录还是文件

const fs = require( 'fs' );

// 判断是否是目录还是文件
function isDirOrFile( path ) {
    if(fs.lstatSync( path ).isDirectory()) {
        return '是一个目录'
    }else if(fs.lstatSync( path ).isFile()) {
        return '是一个文件'
    }else {
        return '非目录非文件';
    }    
}

console.log(isDirOrFile('contents.txt')) // 是一个文件
console.log(isDirOrFile('testMkdir')) // 是一个目录

// 异步获取文件判断是否是目录还是文件
fs.stat('testMkdir',(err,file)=>{
	if (err) {
		return console.error(err);
	} else{
		// info.isFile() 判断是不是一个文件 返回结果为true
		console.log(file.isFile());
        if(file.isFile()) {
            console.log('是一个文件')
        }else if(file.isDirectory()){
            console.log('是一个目录')
        }
        console.log("file信息",file)
        /*
        file信息输出:
        Stats {
            dev: 16777220,
            mode: 16877,
            nlink: 2,
            uid: 502,
            gid: 20,
            rdev: 0,
            blksize: 4096,
            ino: 54129510,
            size: 64,
            blocks: 0,
            atimeMs: 1685413920150.6394,
            mtimeMs: 1685413920150.6394,
            ctimeMs: 1685413920150.6394,
            birthtimeMs: 1685413920150.6394,
            atime: 2023-05-30T02:32:00.151Z,
            mtime: 2023-05-30T02:32:00.151Z,
            ctime: 2023-05-30T02:32:00.151Z,
            birthtime: 2023-05-30T02:32:00.151Z
            }
        */
	}
})

// 同步获取文件
const file = fs.statSync('createMkdir.js')
if(file.isDirectory()){
    console.log("是一个目录")
}else if(file.isFile()){
    console.log("是一个文件")
}
console.log(file,'statSync')

获取某个文件夹下的所有文件

const fs = require('fs');

//异步读取文件夹下所有文件
fs.readdir('../my-project',(err,files)=>{
	if (err) {
		return new Error('Error reading directory');
	}

    // console.log("files",files) // 获取文件下所有文件数组集
    /*
    files [
        '.gitignore',
        'README.md',
        'config-overrides.js',
        'node_modules',
        'package-lock.json',
        'package.json',
        'public',
        'src',
        'tsconfig.json'
    ]
    */
    //读取所有文件的内容
    files.map(item => {
        fs.readFile(`../my-project/${item}`,'utf-8',(err,data)=>{
            // console.log(err,data)
        })
    })
})

// 同步读取文件夹下所有文件
const files = fs.readdirSync('../my-project');
console.log(files)

重命名并移动文件位置

const fs = require('fs');

// 异步重命名并移动文件位置
fs.rename('contents.txt','testMkdir/test.txt',(err,data)=>{
	if (err) {
		console.log(err);
	} else{
		console.log('重命名并移动位置成功',data);
	}
})

// 同步重命名并移动文件位置
fs.renameSync('writeTest.txt','testMkdir/test2.txt');

重命名文件并异步复制

const fs = require('fs');

// 重命名文件并异步复制
fs.copyFile('writeTest22.txt2','testMkdir/test3.txt',(err)=>{
	if (err) {
		console.log(err);
	} else{
		console.log('重命名文件并异步复制成功');
	}
})

// 重命名文件并异步复制
fs.copyFileSync('writeTest.txtt','testMkdir/test4.txt');```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追逐梦想之路_随笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值