nodejs访问文件系统
 
所有的文件系统的调用,都需要加载fs模块,即var fs=require('fs');
nodejs提供的fs模块几乎所有的功能都有两种形式选择:异步和同步,如异步的write()和同步的writeSync()
 
1.打开和关闭文件
打开文件:
fs.open(path,flags,[mode],callback)
fs.openSync(path,flags,[mode])
其中path参数指定文件系统的标准路径字符串,flags参数指定打开文件的模式,如读、写、追加等,可选的mode参数设置文件访问模式,默认为0666,表示可读且可写。
关闭文件:
fs.close(fd,callback)
fs.closeSync(fd)
一个简单的异步模式打开和关闭文件的例子
fs.open('myFile','w',function(err,fd){
if(!error){
fs.close(fd);
}
}

注意:回调函数被指定,并接收err和fd参数,fd参数是你可以用来读取或写入该文件的文件描述符。

2.写入文件
fs模块提供了四种方式将数据写入文件
(1)简单文件写入:
fs.writeFile(path,data,[options],callback)
fs.writeFileSync(path,data,[options])
其中,path参数指定文件的路径,可以是相对或绝对路径,data参数指定将被写入到文件中的String或Buffer对象,可选的options参数是一个对象,它可以包含定义字符串编码,以及打开文件时使用的模式和标志的encoding,mode和flag属性
一个简单的例子:
var fs=require('fs');
var config={
maxFiles:20,
maxConnections:15,
rootPath:'./routes'
};
var configTxt=JSON.stringify(config);
var options={
encoding:'utf8',
flag:'w'
};
fs.writeFile('config.text',configTxt,options,function(err){
if(err){
console.log('config write fail');
} else{
console.log('config write success');
}
});

(2)同步和异步文件写入

fs.writeSync(fd,data,offset,length,position)
fs.write(fd,data,offset,length,position,callback)
其中,fd参数是openSync()或open()返回的文件描述符,data参数指定被写入文件中的String或Buffer对象,offset参数指定data参数中开始阅读的索引,如果你想从字符串或缓冲区的当前索引开始,这个值应该为null。lenght参数指定要写入的字节数,你可以指定null,表示一直写到数据缓冲区的末尾。
举一个异步写入文件的例子:
var fs=require('fs');
var fruitBow1=['apple','orange','banana'];
function writeFruit(fd){
if(fruitBow1.length){
var fruit=fruitBow1.pop()+'';
fs.write(fd,fruit,null,null,function(err,bytes){
if(err){
console.log('File write failed.');
}else{
console.log('write: %s %dbytes',fruit,bytes);
writeFruit(fd); //反复调用,直到fruitBow1的length为0
}
});
}else{
fs.close(fd);
}
}
fs.open('fruit.txt','w',function(err,fd){
writeFruit(fd);
});

(3)流式文件写入
往一个文件写入大量数据是,最好的方式之一是使用流,其中包括把文件作为一个Writeable流打开,Writeable流很容易实现,可以使用pipe()方法与Readable流链接,这也使得它很容易写来自Readable流(如HTTP请求)的数据。
若要将数据异步传送到文件,首先需要创建一个Writeable对象:
fs.createWriteStream(path,[options])
其中,path参数指定了文件的路径,可以是相对或绝对路径,可选的options参数是一个对象,它可以包含定义字符串编码以及打开文件时使用模式和标志的encoding,mode和flag属性。一旦打开Writeable文件流,就可以使用标准的流式write(buffer)方法写入它。
var fs=require('fs');
var grains=['wheat','rice','oats'];
var options={encoding:'utf8',flag:'w'};
var fileWriteStream=fs.createWriteStream('grains.txt',options);
fileWriteStream.on('close',function(){
console.log('file closed.');
});
while(grains.length){
var data=grains.pop()+' ';
fileWriteStream.write(data);
console.log('write: %s',data);
}
fileWriteStream.end();

三 读取文件
fs模块提供了四种不同的方法从文件中读取数据。
(1)简单文件读取:
fs.readFile(path,[options],callback)
fs.readFileSync(path,[options])
其中,path参数指定了文件的路径,可以是相对或绝对路径,可选的options参数是一个对象,它可以包含定义字符串编码以及打开文件时使用模式和标志的encoding,mode和flag属性。
举个例子:
var fs=require('fs');
var options={encoding:'utf8',flag:'r'};
fs.readFile('config.txt',options,function(err,data){
if(err){
console.log('Failes to open config File.');
}else{
console.log('config Loaded.');
var config=JSON.parse(data);
console.log('Max Files: '+config.maxFiles);
console.log('maxConnections: '+config.maxConnections);
console.log('rootPath: '+config.rootPath);
}
});

(2)同步文件读取
fs.readSync(fd,buffer,offset,length,position)
(3)异步文件读取
fs.read(d,buffer,offset,length,position,callback)
(4)流式文件读取
首先要使用以下语法创建一个Readable流对象:fs.createReadStream(path,[options])
var fs=require('fs');
var options={encoding:'utf8',flag:'r'};
var fileReadStream=fs.createReadStream('grains.txt',options);
fileReadStream.on('data',function(chunk){
console.log('Grains: %s',chunk);
console.log('read %d bytes of data.',chunk.length);
});
fileReadStream.on('close',function(){
console.log('file closed.');
});

 

nodejs 文件系统的更多相关文章

  1. 简单的nodejs 文件系统(fs)读写例子。

    在nodejs中,可以通过fs(file system)模块进行文件的I/O操作. API链接地址: http://nodeapi.ucdok.com/#/api/fs.html 下面进行fs文件系统 ...

  2. nodeJs文件系统(fs)与流(stream)

    一.简介 本文将介绍node.js文件系统(fs)和流(stream)的一些API已经参数使用情况. 二.目录 文件系统将介绍以下方法: 1.fs.readFile 2.fs.writeFile 3. ...

  3. nodejs(二) --- 重要知识点回顾

    1. 运行一个nodejs文件, 如一个js文件中只含有console.log("hello world");的文件,我们再git里运行node,即 node hello.js 即 ...

  4. 文件系统(node.js学习笔记)

    根据nodejs菜鸟教程整理. 官方API文档:nodeJS文件系统API 其他整理:nodejs File System 文件系统操作函数分类 1.引用: 导入文件系统模块(fs)语句:var fs ...

  5. node-webkit 使用requirejs 小结

    1. node-webkit 启动页使用requrejs 将webapp中的require改为requirejs,因为requirejs本来就应该用requirejs的,require只是requir ...

  6. EJS 是什么 ,怎么用,以及优点

    一.什么是EJS EJS是一个JavaScript模板库,用来从JSON数据中生成HTML字符串. 二.为什么要使用EJS 与最初的JavaScript相比较,一些不太了解你的代码的人可以更容易地通过 ...

  7. nodeJS之fs文件系统

    前面的话 fs文件系统用于对系统文件及目录进行读写操作,本文将详细介绍js文件系统 概述 文件 I/O 是由简单封装的标准 POSIX 函数提供的. 通过 require('fs') 使用该模块. 所 ...

  8. 在nodeJS中操作文件系统(二)

    在nodeJS中操作文件系统(二)   1. 移动文件或目录 在fs模块中,可以使用rename方法移动文件或目录,使用方法如下:     fs.rename(oldPath,newPath,call ...

  9. NodeJS学习笔记 (2)文件系统操作-fs(ok)

    原文:https://github.com/chyingp/nodejs-learning-guide/blob/master/%E6%A8%A1%E5%9D%97/fs.md#%E9%80%9A%E ...

随机推荐

  1. zip 函数

    zip 函数,看上去是打包的意思,其实功能是将多个可迭代对象,组合成一个个元组. zip(iter1,iter2) a,b = zip(*zip(iter1,iter2)) a = [1,2,3] b ...

  2. 使用Spring实现AOP(XML+注解)

    一.Spring对AOP的支持 AOP并不是Spring框架特有的,Spring只是支持AOP编程的框架之一,每一个框架对AOP的支持各有特点,有些AOP能够对方法的参数进行拦截,有些AOP对方法进行 ...

  3. ng2-bootstrap的modal嵌套时无法滚动的情况

    在ng2-bootstrap的弹窗modal中再弹出另外一个弹窗,关闭子弹窗后,父弹窗会出现无法上下滚动的情况. 通过观察样式可知,关闭子弹窗前,父弹窗的body上是有modal-open样式的,关闭 ...

  4. AngularJS 表单验证小结

    注:本文所述的表单验证即AngularJS自带的表单验证,无需引入第三方的插件 一.常用的验证特性标签 1.非空 为input加入一个required属性即可,例如: <input type=& ...

  5. java文件系统中的的NIO与IO

    java从jdk1.4后就引入了java NIO机制: NIO的显著特点就是通道(channel).缓冲(buffer).选择器(selector),NIO机制中添加了传统I/O机制中没有的非阻塞调用 ...

  6. JAVA正则表达式判断元音

    /* * 判断字符串”qaq”中间的字符是否是元音 * * aeiou * AEIOU * */ (1)正则表达式 (2) (3)

  7. 轻量ORM-SqlRepoEx (八)MySQL、Sql Service 迁移

    数据库变更在编程应用中是常的,MySQL.Sql Service之间的数据迁移更为常见,在 SqlRepoEx2.0DemoForAspCore中演示了,这种数据库之间切换时SqlRepoEx是如何的 ...

  8. JS DOM 1

    接触JS也有快一个月了,现在来总结一下看过的书,一本本总结,之后再融会贯通,也许更有助于学习.废话不多说,现在看的是<JavaScript DOM编程艺术>,该书挺薄的,不太会望而生畏,( ...

  9. 关于“CheckBox”通过表单提交的问题

    大多数时候CheckBox取值传到java后台都是通过js取值,ajax传值,今天改一离职同事的老代码,那家伙通过表单提交一些列的CheckBox设置,没想到的是后台死活接收不正常,name.valu ...

  10. 『Python基础-6』if语句, if-else语句

    # 『Python基础-6』if语句, if-else语句 目录: 条件测试 if语句 if-else语句 1. 条件测试 每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为 ...