nodejs常用模块介绍以及基本操作2

路径操作

获取路径的最后一部分

console.log(path.basename('/foo/bar/baz/adf/admin.html')); 
//  admin.html

返回文件的名称

console.log(path.basename('/foo/bar/baz/adf/admin.html', '.html'));
 // admin

路径获取

// (H:\01-NodeJSCore\20200920Day01\02-授课源码\day01)
 console.log(__dirname); // 输出当前 Demo3.js文件所在的文件路径
// 获取 路径地址 但是不包含文件
console.log(path.dirname('/abc/qqq/www/abc.txt'))
console.log(path.dirname('/abc/qqq/www/abc')); /abc/qqq/www

获取扩展名

console.log(path.extname('index.html')); .//html

路径的格式化

path.format()    obj-->string
 path.parse()    string-->obj   {key:value}

判断是否为绝对路径 (返回布尔类型)

console.log(path.isAbsolute('/foo/bar')); //true
console.log(path.isAbsolute('C:/foo/bar/..')); //true

拼接路径
.. 表示的 上层 路径 . 表示当前路径

规范化路径

console.log(path.normalize('/foo/bar/baz/asdf/quux/..'));
// \foo\bar\baz\asdf
console.log(path.normalize('C:\\temp\\\\foo\\bar\\..\\'));
\\C:\temp\foo\

计算相对路径

console.log(path.relative('/data/orandea/test/aaa','/data/orandea/impl/bbb'));
// ..\..\impl\bbb

解析路径

console.log(path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif'));
// C:\Window\ystem32\wwwroot\static_files\gif\image.gif

两个特殊的属性

console.log(path.delimiter);  // 环境变量 分割符 window 中使用;   linux使用:  
console.log(path.sep);        //表示路径分隔符   windows中使用   \   linux中 使用  /

文件操作

fsstat方法的操作:

fs.stat(path[, options], callback)

  • path <string> | <Buffer> | <URL>
  • options <Object>
    • bigint <boolean> 返回的 fs.Stats 对象中的数值是否为 bigint 型。 默认值: false
  • callback <Function>
    • err <Error>
    • stats <fs.Stats>
      异步的 stat(2)。 回调有两个参数 (err, stats),其中 stats 是 fs.Stats 对象。

如果发生错误,则 err.code 会是常见的系统错误之一。

不建议在调用 fs.open()fs.readFile()fs.writeFile() 之前使用 fs.stat() 检查文件的存在性。 而是应该直接地打开、读取或写入文件,如果文件不可用,则处理引发的错误。

若要只检查文件是否存在,但没有更多的操作,则建议使用 fs.access()

//首先创建一个名叫data的text文件,随便写点东西
const fs = require('fs');
const path = require('path');
 console.log(1);
fs.stat('./data', (err, stat) => { 
    // 一般回调函数中的第一个参数 是错误对象  如果为null  表示没有错误, 否则有错误
    if (err) {
        return
    }
    console.log(err);
    // isFile() 判断是否是一个文件  如果是 则进入if 执行体
    if (stat.isFile()) {
        console.log('文件');
    } else if (stat.isDirectory()) { 
        console.log('目录');
        console.log(2)
    }
    // console.log(stat);
})
console.log(3)

/**
 * atime  文件访问的时间
 * ctime   文件的状态 信息 发生变化的时间
 * mtime  文件数据  发生变化的时间
 * birthtime 文件的创建时间
 */

//  同步的操作  比较耗时  后面的程序需要等待   
console.log(4);
let ret = fs.statSync('./data.txt');
console.log(ret);
console.log(5);

读文件

let strpath = path.join(__dirname,'data.txt');
console.log(strpath);
fs.readFile(strpath,'utf8', (err, data) => { 
    if (err) return;
    // console.log(data.toString());
    console.log(data);
})

// 同步的操作:readFileSync()

写文件

let strpath_01 = path.join(__dirname, 'data.txt');
fs.writeFile(strpath_01, 'hello nihao', 'utf8', (err) => { 
    if (!err) { 
        console.log('写入文件成功....');
    }
})

let buf = Buffer.from('hi');
fs.writeFile(strpath_01, buf, 'utf8', (err) => { 
    if (!err) { 
        console.log('写入文件成功....');
    }
})

目录操作

/**
 * 1, 创建目录  fs.mkdir()
 * 2, 读取目录  fs.readdir()
 * 3, 删除目录   fs.rmdir()
 */
const path = require('path');
const fs = require('fs');

创建目录

fs.mkdir(path.join(__dirname, 'abc'), (err) => { 
    console.log(err)
})

读取目录

fs.readdir(__dirname, (err, files) => { 
    console.log(files);
})
fs.readdir(__dirname, (err, files) => { 
    files.forEach((item, index) => {
        //  fs.stat()  
        fs.stat(path.join(__dirname, item), (err, stat) =>{
            if (stat.isFile()) { // 判断 是文件
                console.log(item,'文件');
            } else if(stat.isDirectory()){  // 判断是   目录
                console.log(item,'目录');
            }
        })
    })
})

删除目录操作

fs.rmdir(path.join(__dirname, 'abc'), (err) => { 
    console.log(err);
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值