NodeJs——(3)和文件(fs)

简介: (13)文件读取的简单用法 模块需求:fs 方法: ①首先我们创建一个test.txt文件,里面输入内容 It's a test txt. 注意,这个txt文件应该是utf-8格式的   ②然后我们创建一个js文件,调用fs模块,并输入一段代码: 注意,此时文件名是错误的 然后执行这个js文件  var fs = require('fs');fs.readFil

(13)文件读取的简单用法

模块需求:fs

方法:

①首先我们创建一个test.txt文件,里面输入内容

It's a test txt.

注意,这个txt文件应该是utf-8格式的

 

②然后我们创建一个js文件,调用fs模块,并输入一段代码:

注意,此时文件名是错误的

然后执行这个js文件

 

var fs = require('fs');

fs.readFile('file.txt', 'utf-8', function (err, data) {
    if (err) {
        console.log("读取错误:" + err);
        return;
    }
    console.log(data);
})

 

输出:


 

③这次我们修改文件名,改为test.txt,再次运行js文件


 

④假如不指定读取的格式:(即去掉第二个参数)



 

输出的是十六进制字节

 

⑤假如读取的文件编码是ANSI,然后用utf-8读取,那么中文字符基本上是无法读取出来的。

 

除了utf-8格式之外,还有utf8, ucs2,ascii, binary, base64, hex等格式

注意,没有GBK之类,具体解决办法参照:

http://blog.csdn.net/youbl/article/details/29812669

 

另外,注意这个是异步请求。

 

 

⑥同步读取文件:

var fs = require('fs');
var data = fs.readFileSync('test.txt', 'utf-8');
console.log(data);


(20)文件系统fs进阶

①提供了文件的读取、写入、更名、删除、遍历目录、链接等功能。

所有操作都有异步和同步两种方法。

 

 

②文件读取:readFile

fs.readFile(filename, [encoding], [callback(err, data)])

 

参数一:是文件名;

参数二:编码方式,默认二进制(具体搜之前的);

参数三:回调函数(参数一是错误,参数二是读取的文件内容);

 

标准方法:

var fs = require("fs");
fs.readFile("./test.txt", "UTF8", function (err, data) {
    if (err) {
        console.log(err);
    } else {
        console.log(data);
    }
})

参数二可以是UTF8,也可以是utf8,也可以是utf-8。效果是一样的

输出:


同步版:

readFileSync(文件名, 文件编码)

返回值是data(读取的文件内容);如果有错误发生,会抛出异常,需要使用try和catch来处理;

 

 

③fs.open文件的打开;

原型:

fs.open(path, flags, [mode], [callback(err, fd)])

 

path是路径,略;

flags表示打开的方式,具体如图:


 

mode表示权限,默认是0666。

6表示4+2;根据推测,1执行,2写,4读,他们的和就是权限;

 

回调函数的fd表示文件描述符:非负整数,表示操作系统内核为当前进程所维护的打开文件的记录表索引。

 

另外,第一个6表示文件所有者的权限;第二个表示同组的用户;第三个表示其他用户;

 

这个命令需要配合write、read,或者其他命令进行操作,例如:

var fs = require("fs");

fs.open("test.txt", "a", 0666, function (err, fd) {
    if (err) throw err;
    fs.write(fd, "pppp", function (e) {
        if (e) throw e;
        fs.closeSync(fd);
    })
})

在test.txt文件里,追加写入pppp四个字符

 

 

④fs.read文件的读取

fs.read(fd, buffer, offset, length, position, callback(err, bytesRead, buffer));

他相对于fs.readFile来说,是更为底层的接口。

 

其作用是从fs.open的回调函数中的文件描述符fd中读取数据,并写入buffer指向的缓冲区对象。

offset是buffer写入的偏移量;

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

position是文件读取的起始位置(当为null时,则从当前文件指针的位置读取);

回调函数传递的bytesRead表示读取的字节数;buffer表示缓冲区对象;

 

如代码:

var fs = require("fs");
fs.open("test.txt", 'r', function (e, fd) {
    if (e) throw e;
    var buf = new Buffer(8);    //创建一个二进制对象
    fs.read(fd, buf, 3, 4, 2, function (err, bytesRead, buffer) {    //读取fd,以二进制形式
        if (err)throw err;
        console.log(bytesRead);
        console.log(buffer);
    })
})

输出结果:



第五行的buff表示是上面new出来的Buffer对象;

3表示写入到buf这个对象的第4个位置;

4表示读取fd 4个字节;

2表示从fd的第二个字节开始读取;

bytesRead表示读取到了4个字节;(假如读取到结尾了,那么这个数字将不包含读取到结尾的那些,比如position位置的数字很大的时候,这里可能就是0)

buffer表示前面那个buf对象

 

 

⑤fs模块的函数列表:(引自Node.js开发指南)


目录
相关文章
|
5月前
|
JSON JavaScript 数据格式
Node.js实现服务器端生成Excel文件(xls格式、xlsx格式文件)并弹出下载文件
Node.js实现服务器端生成Excel文件(xls格式、xlsx格式文件)并弹出下载文件
|
7月前
|
Kubernetes 容器
k8s指定config文件查看node—2023.02
k8s指定config文件查看node—2023.02
|
5月前
|
JavaScript 前端开发
nodejs实现解析chm文件列表,无需转换为PDF文件格式,在线预览chm文件以及目录,不依赖任何网页端插件
nodejs实现解析chm文件列表,无需转换为PDF文件格式,在线预览chm文件以及目录,不依赖任何网页端插件
|
5月前
|
JSON JavaScript API
Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)
Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)
|
8月前
|
域名解析 监控 JavaScript
宝塔面板pm2管理器部署node.js(express框架)sever文件,可以使用域名访问你的后端项目
宝塔面板pm2管理器部署node.js(express框架)sever文件,可以使用域名访问你的后端项目
476 0
|
11月前
|
JavaScript 前端开发 Linux
Node.js 获取文件信息及路径
Node.js 获取文件信息及路径
|
6月前
|
Windows
ts-node : 无法加载文件 C:\Users\Dell\AppData\Roaming\npm\ts-node.ps1,因为在此系统上禁止运行脚本。有关详细信息
ts-node : 无法加载文件 C:\Users\Dell\AppData\Roaming\npm\ts-node.ps1,因为在此系统上禁止运行脚本。有关详细信息
|
4月前
|
JavaScript API Windows
Nodejs 文件 与 路径 相关用法实例解析
Nodejs 文件 与 路径 相关用法实例解析
81 0
|
12天前
|
运维 JavaScript Java
Serverless 应用引擎产品使用之阿里云Serverless函数计算中,在Node.js环境中执行jar文件如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
19 0
|
15天前
|
JSON 关系型数据库 MySQL
node笔记_读取目录的文件
node笔记_读取目录的文件
16 1