nodejs 文件系统

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.‘);
});

时间: 2024-10-11 07:38:27

nodejs 文件系统的相关文章

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

文件系统(File System): 在Node中,文件系统的交互是非常重要的,服务器的本质就是将本地的文件发送给客户端, Node通过fs模块来和文件系统进行交互,该模块提供了一些标准的文件访问API类打开.读取.写入文件.以及与其交互. 要是用fs模块,首先要从核心模块中加载: 使用 const fs= require('fs') ; 来引入 fs使用特点: fs模块中的所有操作都有两种形式可供选择同步和异步, 同步文件系统会阻塞程序的执行,也就是除非操作完毕,否则不会向下执行代码. 异步文

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

在nodejs中,可以通过fs(file system)模块进行文件的I/O操作. API链接地址: http://nodeapi.ucdok.com/#/api/fs.html 下面进行fs文件系统的使用实例: 1.模块调用声明: var fs= require('fs'); var path = require('path'); fs为文件模块,path为系统路径模块. 2.可以使用writeFile方法,将数据写入文件到某个文件夹下. fs.writeFile(filename, data

nodejs 文件系统(fs) 删除文件夹 及 子文件夹下的所有内容

http://blog.163.com/hule_sky/blog/static/2091622452015112821829773/ node 文件系统fs 为我们提供了一些方法 进行文件和文件夹的读写删除等操作 下边将介绍删除文件夹及子文件夹下的所有内容的相关命令(均含有同步和异步方法) 1. fs.stat && fs.statSync 提供了访问文件的属性信息 2. fs.readdir && fs.readdirSync 提供读取文件目录信息 3. fs.unli

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

根据nodejs菜鸟教程整理. 官方API文档:nodeJS文件系统API 其他整理:nodejs File System 文件系统操作函数分类 1.引用: 导入文件系统模块(fs)语句:var fs = require("fs") 2.异步与同步: 异步:fs.readFile();   第一个参数为回调error信息. 同步:fs.readFileSync(); eg: // 异步读取 fs.readFile('input.txt', function (err, data) {

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

一.什么是EJS EJS是一个JavaScript模板库,用来从JSON数据中生成HTML字符串. 二.为什么要使用EJS 与最初的JavaScript相比较,一些不太了解你的代码的人可以更容易地通过EJS模板代码看得懂你的代码. 让我们放松一下,一起来享受下令人激动的干净简洁的感觉. 总之可以让代码更加干净整洁,让人易懂. 可以看如下的例子: 这是用javascript实现的代码 var html = "<h1>"+data.title+"</h1>

nodejs的文件系统

在node中,有大量的核心模块,每个模块完成一些具体的功能: http:实现http服务 fs:文件系统模块,专用于处理文件操作的 net:网络模块,实现网络的编程 path:处理路径的 url:处理url地址的. util:工具模块,提供一些常用工具 常见的文件操作: 主要就是增删改查(CRUD create read update delete) (底层的操作和封装之后的操作) (1).读取文件 使用封装后的方法: readFile 读取文件 readFile,有同步和异步两个 (有Sync

nodeJS之fs文件系统

前面的话 fs文件系统用于对系统文件及目录进行读写操作,本文将详细介绍js文件系统 概述 文件 I/O 是由简单封装的标准 POSIX 函数提供的. 通过 require('fs') 使用该模块. 所有的方法都有异步和同步的形式. 异步形式始终以完成回调作为它最后一个参数. 传给完成回调的参数取决于具体方法,但第一个参数总是留给异常. 如果操作成功完成,则第一个参数会是 null 或 undefined //异步示例 var fs = require('fs'); fs.unlink('/tmp

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

  1. 移动文件或目录 在fs模块中,可以使用rename方法移动文件或目录,使用方法如下:     fs.rename(oldPath,newPath,callback); 在rename方法中,有三个参数,oldPath参数用于指定被移动文件或目录的完整路径,newPath参数用于指定移动后该文件或目录的完整路径,callback参数用于指定移动执行完毕时调用的回调函数,在该回调函数使用一个参数,参数值为移动后操作失败时触发的错误对象. 比如如下代码: var fs = require('

【nodejs】 文件系统(fs) 之读写文件

//写入文件 var data = "hello world"; fs.writeFile('c:\\a.txt', data, 'ascii', function(err) { if (err) { console.log('写入文件失败'); } else { console.log('保存成功, 赶紧去看看乱码吧'); } }); //读取文件 fs.readFile('c:\\a.txt', 'ascii', function(err, data) { if (err) { c