node.js fs详解

实例1
var fs=require('fs');

var data=fs.readFileSync('input.txt');
// 同步读取
console.log('同步读取:'+ data);

console.log('程序执行完毕')

fs.readFile('input.txt',function (err,data) {
    if(err){
        return console.error(err)
    }
    console.log("异步读取:" + data);
});
// 异步读取

实例2
var fs=require("fs");
console.log('发斯蒂芬');
fs.open("input.txt",'r+',function (err,fd) {
    if(err){
       return console.error(err);
    }
    console.log('nice');
})

实例3:获取文件信息
var fs=require("fs");
console.log('准备打开文件');
fs.stat('input.txt',function (err,stats) {
    if(err){
        return console.error.log(err)
    }console.log(stats);
    console.log('读取文件陈宫 ');
    console.log('是否为文件(isfile)?'+stats.isFile());
    console.log('是否为文件目录(isDiretory)?'+stats.isDirectory());
})

实例4:写入文件
异步模式写入文件的语法格式:
// fs.writeFile(file,data[,options],callback)
参数
参数使用说明如下:

file - 文件名或文件描述符。

data - 要写入文件的数据,可以是 String(字符串) 或 Buffer(缓冲) 对象。

options - 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 'w'

callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。// writeFile 直接打开文件默认是 w 模式,所以如果文件存在,该方法写入的内容会覆盖旧的文件内容。

var fs=require("fs");
console.log("准备写入文件");
fs.writeFile('input.txt','我是fs.writeFile写入到内容',function (err) {
    if(err){
        return console.error.log(err)
    }
    console.log('数据写入成功');
    console.log('-------');
    console.log('读取写入的数据');
    fs.readFile('input.txt',function (arr,data) {
        if(err){
            return console.error.log(err)
        }
        console.log('异步读取文件数据:'+data)
    })
})



实例5:读取文件

语法:fs.read(fd, buffer, offset, length, position, callback)

参数:参数使用说明如下:

fd - 通过 fs.open() 方法返回的文件描述符。

buffer - 数据写入的缓冲区。

offset - 缓冲区写入的写入偏移量。

length - 要从文件中读取的字节数。

position - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。

callback - 回调函数,有三个参数err, bytesRead, buffer,err 为错误信息, bytesRead 表示读取的字节数,buffer 为缓冲区对象。

fs=require("fs")
var buf= new Buffer.alloc(1024)
console.log('before');
fs.open("input.txt",'r+',function (err,fd) {
    if(err){
        return console.error(err)
    }
    console.log('我是open的数据');
    console.log('我是read的数据');
   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));
       }
   })
})

关闭文件
fs.close(fd, callback)

fd - 通过 fs.open() 方法返回的文件描述符。

callback - 回调函数,没有参数。


var fs=require("fs")
var buf =new Buffer.alloc(1024)

console.log('beforeopen');

fs.open("input.txt",'r+',function (err,fd) {
    if(err){
        return console.error(err)
    }
    console.log('success.open')
    console.log('before.read')
    fs.read(fd,buf,0,buf.length,0,function (err,bytes) {
        if(err){
            console.log(err)
        }

        if(bytes>0){
            console.log(buf.slice(0,bytes))
        }
        fs.close(fd,function (err) {
            if(err){
                console.log('err')
            }
            console.log('close')
        })
    })
})


实例7:截取文件

   fs.ftruncate(fd, len, callback)

参数
参数使用说明如下:

fd - 通过 fs.open() 方法返回的文件描述符。

len - 文件内容截取的长度。

callback - 回调函数,没有参数。

var fs=require("fs")
var buf =new Buffer.alloc(1024)

console.log('brforeopen');

fs.open('input.txt','r+',function (err,fd) {
    if(err){
        return console.error(err)
    }
    console.log('successopen');
    console.log('截取了10字节后的内容');

    fs.ftruncate(fd,10,function (err) {
        if(err){
            console.log('err');
        }
        console.log('success.get');
        console.log('readsame');
        fs.read(fd,buf, 0,buf.length,0,function (err,bytes) {
            if(err){
                console.log('err');
            }
            if(bytes>0){
                console.log(buf.slice(0,bytes))
            }

            fs.close(fd,function (err) {
                if(err){
                    console.log(err);
                }
                console.log("success.close")
            })
        })
    })
})


// 实例8:删除文件
fs.unlink(path, callback)

var fs=require("fs")
console.log('before.delete');
fs.unlink('input.txt',function (err) {
    if(err){
        return console.error(err)
    }
    console.log('successdelete')
})


创建目录 :
fs.mkdir(path[, mode], callback)

var fs = require("fs")
console.log("创建目录 /tmp/test/");
fs.mkdir("/tmp/test/",function (err) {
    if(err){
        return console.error(err)
    }
    console.log('successcreated')
})


读取目录

var fs =require('fs')

console.log("查看 /tmp 目录");
fs.readdir('/tmp/',function (err,files) {
    if(err){
        return console.error(err);
    }
    files.forEach(function (file) {
        console.log(file);
    })
})


删除目录

fs.rmdir(path, callback)

var fs=require("fs")
console.log('brforedelete /tmp/test')
fs.rmdir('/tmp/test',function(err){
    if(err){
        return console.error(err);
    }
    console.log("读取、tmp目录");
    fs.readdir('/tmp',function (err,files) {
        if(err){
            return console.error(err);
        }
        files.forEach(function (file) {
            console.log(file);
        })
    })
})

流

冲流中读取数据

var fs =require('fs');
var data = '';
var readerStream=fs.createReadStream("input.txt")

readerStream.setEncoding('UTF8');

readerStream.on('data',function (chunk) {
    data +=chunk;
})

readerStream.on('end',function () {//此处函数不传参;
    console.log(data);
})

readerStream.on('error',function (err) {
    console.log(err.stack);
})

写入流

var fs =require("fs")
var data="菜鸟www.runoob.com"
var writerStream = fs.createWriteStream('input.txt')

writerStream.write(data,'UTF8')

writerStream.end();

writerStream.on('finish',function(){
    console.log("successwrite");
})

writerStream.on('error',function(err){
    console.log(err.stack);
});

console.log('end');





猜你喜欢

转载自blog.csdn.net/thinkingw770s/article/details/82632600