Node.js的内置模块 fs模块 path模块 http模块

Nodejs 内置模块

1. fs 文件系统

1.1 引入
const fs = require('fs');
1.2 方法的使用

对文件和文件夹的操作都有同步和异步两种方式 代码里没有可以去官方文档中查看

// 文件的操作
// 1. 读取文件内容 第一个参数是路径 第二个是字符集 第三个是一个回调函数 
// 2.data是读取的文件中的所有代码 不论什么格式
fs.readFile('./test.txt', 'utf-8', function (err, data) {
    if (err) {
        console.log('文件内容读取失败');
    } else {
        console.log('文件内容读取成功', data);
    }
});
// 同步  sync同步  async异步 参数是两个参数文件路径 字符集 如果不写参数集那么读取出来的就是buffer
//同步的话去赋值不会出差错 同步的读取文件采用赋值方式  通过try catch来捕获错误
try {
    const data = fs.readFileSync('./test.txt', 'utf-8');
    console.log('文件内容读取成功', data);
} catch (error) {
    console.log('文件内容读取失败');
}

// 2. 写入文件内容(会覆盖掉文件中的原内容)
// 当我们路径写错的时候例如文件名 会自动创建一个新的文件 回调函数里值接收一个参数就是错误
//只会创建新的文件 不会创建文件夹 
fs.writeFile('./test.txt', '这是新写入的内容', function (err) {
    console.log('err', err);
});
//同步写入文件 也可以用try catch来管理
fs.writeFileSync('./test.txt', '这是同步新写入的内容');
try {
    fs.writeFileSync('./test.txt', '这是同步新写入的内容');
} catch (error) {
    console.log('文件内容读取失败',error);
}

// 3. 追加文件内容 也会创建新的文件 但是也不能创建文件夹
fs.appendFile('./test.txt', '\n这是追加的新内容', (err) => {
    console.log(err);
})
fs.appendFileSync()

// 4. 复制文件内容 第一个参数是被复制的文件的路径 第二个是复制过去的新文件路径 
//如果新文件不存在也就是第二个参数 就会创建一个新文件
fs.copyFile('./test.txt', './newTest.txt', (err) => { 
    console.log(err);
})
fs.copyFileSync()//同步写法

// 5. 删除文件
fs.unlink('./newTest.txt', err => {
    console.log(err);
})
fs.unlinkSync()//同步写法

// 6. 重命名文件(也可以用于文件的移动) 会对原文件做一个重命名 如果第二个参数的路径有文件夹 那么就会把文件移动到文件夹下面
//下面的例子就把bbb移动到了data下面 但是注意一点 前提是必须有data这个文件夹 这些都是对文件的操作不是对文件夹的操作
fs.rename('./bbb.txt', './data/bbb.txt', err => {
    console.log(err);
})
fs.renameSync()//同步写法

// 文件夹的操作
// 1. 创建文件夹
//不能连续创建两个文件夹 下面的例子里data必须以前存在,才可以在里面添加一个b文件夹 
fs.mkdir('./data/b', (err) => {
    console.log(err);
});
fs.mkdirSync('./data/a')
   
// 2. 删除文件夹(只能删除空文件夹)
fs.rmdir('./data', err => {
    console.log(err);
})
fs.rmdirSync('路径')

// 3. 读取文件夹内容 读取的文件是子目录下面的 结果是子目录文件或文件夹名字的一个数组 
fs.readdir('./data/b', (err, data) => {
    console.log('err', err);
    console.log('data', data);
})

// 4. 判断文件(文件夹)是否存在 err就代表这个文件或文件夹不存在
fs.access('./dat', (err) => {
    if (err) {
        console.log('不存在');
    } else {
        console.log('存在');
    }
})

// 5. 查看状态 判断当前路径是文件还是文件夹
//回调函数里面的参数stats是一个对象  
fs.stat('./data', (err, stats) => {
    console.log('是不是文件', stats.isFile());//是否为文件
    console.log('是不是文件夹', stats.isDirectory());//是否为文件夹
})
//同步方法fs.statsSytnc会返回一个对象 对象上有isFile()  isDirectory()
const stats = fs.statSync()
stats.isFile()
stats.isDirectory()

2. path 路径

2.1 引入
const path = require('path');
2.2 方法的使用
// 全局对象 __dirname:用于当前文件所在目录的绝对路径 不是path模块里面的
console.log(__dirname);

const myPath = 'C:\\Users\\nocat\\Desktop\\08\\02. 课堂代码\\03-Nodejs\\a.mp4';

// 1. basename 用于获取给定路径中的最后一部分     就是上面的a.mp4
const result = path.basename(myPath);

// 2. dirname 用于获取给定路径中出去最后一部分的其他部分 就是上面的C:\\Users\\nocat\\Desktop\\08\\02. 课堂代码\\03-Nodejs  basename和dirname可以拼接成一个完整的路径 
const result = path.dirname(myPath);
//官方文档:http://nodejs.cn/api/path.html#pathparsepath
// 3. extname 用于获取给定路径中文件的后缀名 拓展名
const result = path.extname(myPath);

// 4. parse 用于拆分给定路径  
const result = path.parse(myPath);

path.parse('/home/user/dir/file.txt'); //返回一个对象
// 返回:
// { root: '/',
//   dir: '/home/user/dir',
//   base: 'file.txt',
//   ext: '.txt',
//   name: 'file' }

// 5. join 拼接相对路径
const result = path.join('./a', './b', './c', '..');

// 6. resolve 拼接绝对路径
const result = path.resolve('./a', './b', './c');

console.log(result);

3. http 网络请求

const http = require('http');
const fs = require('fs')

//简单的理解一下
// request:请求对象 包含了请求相关的数据和方法等
// response:响应对象   包含了请求相关的数据和方法等
const app = http.createServer((requset, response) => {
    res.write('<h1>Hello</h1>');
    res.end();
});

// 端口号:3000,当前电脑中每一个应用程序的唯一标记 (0-65525)
// 范围:0 - 65535,建议设置 3000 以上
app.listen(3000);

//运用fs模块和http模块返回一个页面
//结合fs模块可以选择要返回的界面
const http = require('http');
const fs = require('fs')
const app = http.createServer((req,res) => {
    fs.readFile('./nn.html','utf-8',(err,data) => {
        try {
            res.write(data);
            res.end();//这个不可以写在下面我说的位置
        } catch (err) {
            console.log(err);
        }
    })
    //res.end();不可以写在这里 因为readfile是异步的 导致res.end先执行不对 应该先res.write先执行
});

app.listen(3000);
六个转成布尔值会变成false的 这个是原生js知识点
0 '' undefined null Nan false

必须是空字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值