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

(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开发指南)

时间: 2024-10-25 16:26:02

NodeJs——(3)和文件(fs)的相关文章

nodejs实现遍历文件夹并统计文件大小

  离开公司已经有2个多个月,之前写了不少工具,但在离开公司的当天,我亲手把一年来的所有积累工具和代码都格式化了.今天想起之前在项目中遇到的一个问题,今天将其记录下来. 我在优化内存的时候,遇到一些图片在加载的时候很难loading出现,发现一些技能图标,尺寸很小50x50,但是图片的大小却很大,有几m,于是找到路径,发现是美术输出图标的时候因为忘记压缩导致图标变得很大,所以导致加载出现不停loading现象出现. 项目里美术文件也有几千张那么多,要一张张去找问题还真是一个体力活,当时利用空闲的

nodejs实现遍历文件夹并统计文件大小_node.js

离开公司已经有2个多个月,之前写了不少工具,但在离开公司的当天,我亲手把一年来的所有积累工具和代码都格式化了.今天想起之前在项目中遇到的一个问题,今天将其记录下来. 我在优化内存的时候,遇到一些图片在加载的时候很难loading出现,发现一些技能图标,尺寸很小50x50,但是图片的大小却很大,有几m,于是找到路径,发现是美术输出图标的时候因为忘记压缩导致图标变得很大,所以导致加载出现不停loading现象出现. 项目里美术文件也有几千张那么多,要一张张去找问题还真是一个体力活,当时利用空闲的时间

Nodejs如何复制文件_node.js

前端童鞋都知道,javascript是没有权限操作磁盘文件的,server童鞋一向都很鄙视.但是nodejs可谓让咱们前端扬眉吐气啊,最近在学node,其强大的功能让人异常激动和兴奋.今天就学习了它怎么读写文件. 首先需要引入fs模块,这是nodejs自带的. var fs=require("fs"); 具体可参考Nodejs API:http://www.w3cfuns.com/tools.php?mod=booknodejs 主要用到了两个方法: 1.fs.readFile(fil

centos 彻底删除nodejs默认安装文件

1>    yum remove nodejs npm -y   2> cd  /usr/local/lib 删除所有 node 和 node_modules文件夹 cd  /usr/local/include 删除所有 node 和  node_modules 文件夹 3> cd  /usr/local/bin      删除 node 的可执行文件 4> 删除: /usr/local/bin/npm 删除: /usr/local/share/man/man1/node.1 删除

nodejs批量修改文件编码格式_node.js

摘要: 最近在制作手册的时候遇到了一个问题'文档乱码',查看文件之后发现文件编码不对,总共100多个文件,如果用编辑器另存为utf8,那就悲催了.所以自己就写了个程序,批量修改文件编码格式. 代码: 复制代码 代码如下: /**  * 修改文件编码格式,例如:GBK转UTF8  * 支持多级目录  * @param {String} [root_path] [需要进行转码的文件路径]  * @param {Array}  [file_type] [需要进行转码的文件格式,比如html文件]  *

nodejs文件操作模块FS(File System)常用函数简明总结_node.js

件系统操作相关的函数挺多的.首先可以分为两大类. 一类是异步+回调的. 一类是同步的. 在这里只对异步的进行整理,同步的只需要在函数名称后面加上Sync即可 1. 首先是一类最常规的读写函数,函数名称和形式,应该是起源于C语言的. 复制代码 代码如下: fs.open(文件路径,读写标识,[文件mode值,666],回调函数(err,文件句柄fd));          fs.read(文件句柄fd,被写入的buffer,offset,length,position,回调函数(err, byte

Nodejs中读取中文文件编码问题、发送邮件和定时任务实例_node.js

关于nodejs读取中文文件真是折腾了不少时间,网上各种方案,最后没有一个适用我,好在解决了. 下面的三个知识点都是从项目中抽出的,要单独运行脚本的话需要用全局模式来安装模块,比如安装中文转换模块(后续其它的也需要这么做): 复制代码 代码如下: npm install -g iconv-lite npm install -g nodemailer npm install -g node-schedule 1.nodejs读取中文文件编码问题 准备一个文本文件(当然也可以是csv文件等)test

nodejs读取文件操作例子(支持中文)

前言 写了几个关于nodejs的小的demo,希望对入门有帮助! form_data server.js 运行命令 node server 就可以看到有一个简单的form提交! read_changeJson 运行命令 node readJson  list 可以读取json文件中的数据! 运行命令 node readJson  add [数据] 就可以向文件里面添加数据 process 解释 process.argv 一个包含命令行参数的数组. 第一个元素会是 'node',第二个元素将是.j

nodejs模块——fs模块

fs模块用于对系统文件及目录进行读写操作. 一.同步和异步 使用require('fs')载入fs模块,模块中所有方法都有同步和异步两种形式. 异步方法中回调函数的第一个参数总是留给异常参数(exception),如果方法成功完成,该参数为null或undefined. 异步写法demo:有一个回调函数. var fs = require('fs'); // 载入fs模块 fs.unlink('/tmp/shiyanlou', function(err) { if (err) { throw e

使用NodeJS将文件或图像上传到服务器

在这篇文章中,我们将看到如何使用NodeJS上传文件或图像到服务器.这里我们将使用Visual Studio和以下NPM包用于我们的开发过程. express multer body-parser 我们将简要解释这些包的使用.众所周知,NodeJS是一个基于Chrome V8 JavaScript引擎的运行时环境,用于服务器端和网络应用程序.并且它是支持跨平台的开放资源.NodeJS应用程序用纯JavaScript编写.如果你是NodeJS新手,那么我强烈建议你阅读我以前关于Node JS的帖子