菜单

上学笔记,文件系统操作模块fs使用办法安详严整_node

2020年4月2日 - 首页
上学笔记,文件系统操作模块fs使用办法安详严整_node

NodeJs:文件读取API使用方法 – – readFile()

之前的笔记 就不一一去列出来了
因为自己用到的东西不多 也不清楚哪个是常用的 下面就随便列列吧

需求:使用Node中提供的文件操作API,读取files目录下的1.txt
文档中文本内容。 Node的三个组成部分:ECMAScript核心 + 全局成员 +
核心API成员
核心API成员,在大家安装Node应用程序的时候,就已经安装到了自己的电脑中。
如果想要访问核心成员,直接使用require,就能够导入并使用这些核心成员。

澳门太阳集团 1

const fs = require;

image.png

fs.核心模块中,提供了一个 fs.readFile方法,来读取指定目录下的文件

fs.readFile(); 有三个参数

我们在使用Node.js做服务端开发时,http、tcp、udp、文件io等等类型的操作,都会用到Buffer
Buffer代表一个缓冲区,存储二进制数据,是字节流。我们在网络传输时,就传输的这种字节流。写文件时,也是写的字节流。

参数1:表示要读取的文件的路径
参数2:表示要以什么样的编码格式,来读取指定的文件,默认编码格式为null。
参数3:表示当文件读取完成,调用这个callback回调函数来处理读取的结果。
第一个参数,是error对象,第二个参数,才是读取成功的结果。

澳门太阳集团 2

fs.readFile(“./files/1.txt”,function{console.log; // null 如果err 为null 就证明读取成功了,没有出错console.log; //  读取的内容数据})

特点.png

读取文件完整代码演示:

API

NodeJs:文件写入API使用方法 –澳门太阳集团,
writeFile()需求:调用fs.writeFile方法,向files目录中,写入一个2.txt文档。

澳门太阳集团 3

导入fs 文件操作模块

image.png

const fs = require;

调用fs.writeFile写入文件
参数1:路径字符串,表示要把文件内容写入到那个文件中
参数2:要写入的数据,可以指定一个字符串
参数3:可选参数,表示要以什么格式写入文件内容,默认以utf-8格式写入文件
参数4:文件写入完成之后的callback回调函数


/*注释*/ : 在回调函数中,只有一个形参,err返回错误对象

在Node.js中,使用fs模块来实现所有有关文件及目录的创建,写入及删除操作。在fs模块中,多有文件及目录的操作都可以使用同步或异步这两种方法,即readFile
和readFileSync,有Sync后缀的方法为同步方法,不具有Sync后缀的方法均为异步方法。

写入文件完整代码演示:

NodeJs:文件追加API使用方法 – – appendFile()**导入 fs
文件操作模块

  • 第一个参数filename:表示要读取文件的路径和名称
  • 第二个参数option:指定使用哪种编码格式来读取该文件,可指定的属性值为‘utf-8’,‘ascii’,‘base64’,
  • 第三个参数callback:表示文件服务完毕后执行的回调函数,回调函数的第一个参数err,为读取文件操作失败时触发的错误对象,第二个参数data,表示读取文件成功后读取到的文件内容。

const fs = require;

var fs = require('fs');
var data = fs.readFile('./index.txt', 'utf-8', function(err,data){
    // 操作结果作为回调函数的第二个参数返回
    if (err) {
        console.log('读取文件发生错误')
    }else {
        console.log(data);
    }
});

调用fs.appendFile 追加文件内容

澳门太阳集团 4

参数1:表示要向哪个文件中追加内容,指定一个文件的路径
参数2:表示要追加的具体的内容,可以传递字符串内容
可选参数:表示追加文本内容时候的编码格式,如果省略此参数。默认以utf8的格式追加内容
参数4:表示追加完成之后的回调

image.png

/*注释*/ :有形参err,追加失败之后的错误结果

追加文件完整代码演示:

fs模块相对路径的问题:

var fs = require('fs');
fs.writeFile('./message.txt','这是写入的数据',function(err){
    if(err){
        console.log('写文件操作失败。')
    }else {
        console.log('写文件操作成功。')
    }
})

使用fs模块操作文件的时候,如果提供的操作路径是相对路径,则会根据当前执行node命令时的磁盘目录,去拼接提供的文件的相对路径,从而容易出现问题;

如果message文件不存在 则会创建message.txt
如果message文件存在 则写入的数据覆盖原本内容

Ps:上述图片内容中代码的路径请根据自身文件目录路径为主。

用readFile实现复制图片

解决方案:

var fs = require('fs');
fs.readFile('./a.jpg', 'base64', function(err,data){
    fs.writeFile('./b.jpg',data.toString(),'base64',function(err){
        if(err){
            console.log('写文件操作失败')
        }else {
            console.log('写文件操作成功')
        }
    })
});

注意:在node中_ _dirname 表示当前这个文件,所处的磁盘目录

_ _filename 表示当前这个文件的完整路径,路径中包含了具体的文件名

结论:今后,只要在使用fs
模块操作文件的时候,而且这个方法需要提供一个文件的操作路径,这时候大家一定要使用_
_dirname 去拼接路径。

var fs = require('fs');
fs.appendFile('./message.txt', '这是追加的数据', 'utf-8', function(err){
    if(err){
        console.log('追加文件失败')
    }else {
        console.log('追加文件成功')
    }
});

NodeJs:读取文件信息 – – fs.stat()**

2.Fs.stat() 方法使用

Ps:上述代码终端打印日志:

path - 文件的路径。
flags - 文件打开的行为。
mode - 设置文件模式(权限),文件创建默认权限为 0666(可读,可写)。
callback - 回调函数,带有两个参数如:callback(err, fd)。

NodeJs:复制文件 – – fs.copyFile()

flags 参数
r 以读取模式打开文件
r+ 以读写模式打开文件
rs 以同步的方式读取文件
rs+ 以同步的方式读写文件

2.copyFile();方式使用

var fs = require('fs')
fs.open('message.txt', 'r+', function (err, fd) {
    if (err) return err;
    console.log(fd);
    console.log('文件打开成功');
});

总结

澳门太阳集团 5

以上所述是小编给大家介绍的NodeJs
文件系统操作模块fs使用方法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

image.png

    fd - 通过 fs.open() 方法返回的文件描述符。
    buffer - 数据写入的缓冲区。
    offset - 缓冲区写入的写入偏移量。
    length - 要从文件中读取的字节数。
    position - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。
    callback - 回调函数,有三个参数err, bytesRead, buffer,err 为错误信息, bytesRead 表示读取的字节数,buffer 为缓冲区对象。

var fs = require("fs");
var buf = new Buffer(1024);

console.log("准备打开已存在的文件!");
fs.open('message.txt', 'r+', function(err, fd) {
    if (err) {
        return console.error(err);
    }
    console.log("文件打开成功!");
    console.log("准备读取文件:");
    fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
        if (err){
            console.log(err);
        }
        console.log(bytes + "  字节被读取");

        // 仅输出读取的字节
        if(bytes > 0){
            console.log(buf.slice(0, bytes).toString());
        }
    });
});

澳门太阳集团 6

image.png

var fs = require('fs')
var buf = new Buffer('心心心输送机');
fs.open('./message.txt','w', function(err,fd){
    fs.write(fd,buf,3,9,0,function(err,written,buffer){
        if(err){
            console.log('文件写入失败')
        }else{
            console.log('写入文件成功')
        }
    })
})

“心心输” 三个字被写入

在写入文件后,我们经常要关闭文件 fs.close(fd,[callback])

var fs = require("fs");

console.log("创建目录 test");
fs.mkdir("test",function(err){
    if (err) {
        return console.error(err);
    }
    console.log("目录创建成功。");
});

var fs = require('fs')
fs.readdir('./',function(err,files){
    if(err){
        console.log('读取目录失败')
    }else{
        console.log(files)
    }
})

澳门太阳集团 7

image.png

澳门太阳集团 8

image.png

var fs = require('fs');
fs.stat('message.txt',function(err,stats){
    if(err){
        return err;
    }
    console.log(stats);
    console.log("读取文件信息成功");
    //检测文件类型
    console.log('是否为文件(isFile) ? ' + stats.isFile());
    console.log('是否为目录(isDirectory) ? ' + stats.isDirectory());
});

澳门太阳集团 9

image.png

var fs = require('fs');
fs.exists('./test', function (exists) {
    if (exists) {
        console.log('路径存在');
    }
});

太累了 不写了 具体需要的api自己查吧 等用到时再更新

个人学习 node
目录地址

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图