node.js相关知识点(二)

1、读取

读取(read)

参数:

fd:通过fs.open()方法返回的文件描述符

buffer:数据写入的缓冲区

offset:缓冲区写入的写入偏移量

length:要从文件中读取的字节数

position:文件读取的起始位置,如果值为null,则会从当前文件指针的位置读取。

callback:回调函数,有三个参数err,bytesRead ,buffer; err为错误信息,bytesRead表示读取的字节数,buffer为缓冲区对象

       let buff = Buffer.alloc(0);//创建一个大小为0的缓冲区
            let buffer = Buffer.alloc(1024);
            fs.open("./windy/BeyondTheSky.txt", "r+", (err, fd) => {
                if (err)
                    throw err;
                let count = 0;
                console.log("文件打开,开始读取");
                let readFile = () => {
                    fs.read(fd, buffer, 0, buffer.length, buffer.length * count, (err, bytes) => {
                        if (err)
                            throw err;
                        if (bytes > 0) {
                            console.log(count);
                            buff = Buffer.concat([buff, buffer.slice(0, bytes)]);
                            count++;
                            readFile();
                        }
                        else {
                            fs.close(fd, (error) => {
                                if (error) {
                                    console.log("文件关闭失败");
                                }
                                else {
                                    console.log("文件关闭成功");
                                    console.log(buff.toString());
                                }
                            });
                        }

                    });
                }
                readFile();
            });

            res.end();

分析:

上图是分步读取,在读取大文件的时候使用;

首先创建缓冲区,然后用read读取,参数的作用在开头已写,然后做出判断,假如字节大于0,开始使用contact合并缓冲区,最后使用close关闭文件即可。

2、截取

截取 (ftruncate)

参数:

fd:通过fs.open()方法返回的文件描述符;

length:文件内容截取的长度;

callback:回调函数;

 let buff =Buffer.alloc(1024);
            console.log("打开文件!");
            fs.open("./windy/BeyondTheSky.txt","r+",(err,fd)=>{
                if(err)
                throw err;
                console.log("打开成功!");
                fs.ftruncate(fd,1024,(error)=>{
                    if(error){
                        console.log("文件截取失败!");
                    }
                   else{
                       console.log("文件截取成功!");
                   }
                });
                fs.read(fd,buff,0,buff.length,0,(errinfo,bytesread)=>{
                    if(errinfo)
                    throw errinfo;
                    console.log(buff.toString());
    
                });
            });
           
        
            res.end();

3、创建目录

创建目录(mkdir)

参数:

path:文件路径

callback:回调函数

4、删除目录

删除目录(rmdir)

参数:

path:文件路径

callback:回调函数

5、删除文件

删除文件(unlink)

参数:

path:文件路径

callback:回调函数

 

3、4、5案例:类似登录qq时会自动记录下qq号

            let url = "./" + QQ;
            fs.mkdir(url, (err) => {
                if (err) {
                    console.log("该目录已经存在!");
                    fs.rmdir(url, (error) => {
                        if (error) {
                            console.log("删除失败");
                            fs.unlink(url + "/data.txt", (errinfo) => {
                                if (errinfo) {
                                    console.log("文件删除失败");
                                }
                                else {
                                    console.log("文件删除成功");

                                }
                            });

                        }
                        else {
                            console.log("删除成功");
                        }


                    })
                }
                else {
                    console.log("创建成功!");
                    fs.writeFile(url + "/data.txt", "数据", (err) => {
                        if (err) {
                            console.log("写入失败");
                        }
                        else {
                            console.log("写入成功!");
                        }
                    });
                }
                res.end();
            })

结果:

在浏览器上写入/?QQ=.....回车

接着继续输入上面,会首先删除文件,接着继续输一次就会删除目录

 

6、文件重命名

文件重命名(rename)

参数:

oldpath:旧文件名

newpath:新文件名

callback:回调函数

       fs.rename("./Friday","./Monday",(err)=>{
                if(err){
                    console.log("命名失败")
                }
                else{
                    console.log("命名成功")
                }
                res.end();

            })

7、文件追加写入

文件追加写入(appendFile)

参数:

path:要追加文件的路径

data:要追加的信息

callback:回调函数

            fs.appendFile("./windy/BeyondTheSky.txt","奈何故里无故人",(err)=>{
                if(err){
                    console.log("追加失败")
                }
                else{
                    console.log("追加成功")
                }
                res.end()
            })

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值