美文网首页
Node.js内置的文件系统模块(fs)

Node.js内置的文件系统模块(fs)

作者: constLy | 来源:发表于2017-08-17 09:36 被阅读0次

异步读取文件

按照js的标准,异步读取一个文本文件的格式如下:

'use strict'

const fs = require('fs')

fs.readFile('test.txt', 'utf-8', function(err, data){
    if(err){
        cconsole.log(err)
    }else{
        console.log(data)
    }
})

请注意,test.txt文件必须在当前目录下,且文件编码必须为utf-8

如果我们读取的文件不是文本文件,而是二进制文件,怎么办呢?
下面演示如何读取一个图片文件:

'use strict'

const fs = rquire('fs')

fs.readFile('test.png', function(err, data){
    if(err){
        console.log(err)
    }else{
        console.log(data)
        console.log(data.length + 'bayes')
    }
})

当读取二进制文件时,不传入文件编码时,回调函数的data参数将返回一个buffer对象。在Node.js中,buffer 对象可以和String做转换,例如,把一个buffer转化成String

var text = data.toString('utf-8')

String转化为Buffer

var buf = new Buffer('text', 'uft-8')

同步读取文件

fs 模块也提供相应的同步读取文件函数。与异步相比,多了一个Sync后缀,并且不接受回调函数,函数直接返回结果。
fs 模块同步读取文件如下:

'use strict'

const fs = require('fs')

var data = fs.readFileSync('test'.txt, 'utf-8')

如果同步读取文件失败,则需要使用try...catch 捕获该错误。

try{
    var data = fs.readFileSync('test.txt', 'utf-8')
}catch(err){
    // 出错了
}

写文件

例如:

'use strict'

const fs = require(''fs)

fs.writeFile('test.txt', data, function(err){
    if(err){
        console.log(err)
    }else{
        console.log('ok')
    }
})

writeFile 方法的参数依次是文件名,数据和回调函数。如果传入的数据类型是String ,默认按UTF-8编码写入文件,如果传入的数据类型是Buffer,则写入的是二进制文件。回调函数只关心成功与否,因为需要一个err参数。

readFile类似,writeFile也有一个同步的方法,叫writeFileSync,例如:

const data = 'Hello,Node.js'
writeFileSync('test.txt', data)

stat

如果我们要获取文件的大小,创建时间等信息,可以使用fs.stat(),它返回的是一个Stat对象,能告诉我们文件或者目录的详细信息。

'use strict'

const fs = require('fs')

fs.stat('test.txt', function(err, stat){
    if(err){
        console.log(err)
    } else {
        // 是否是文件
        console.log('isFile:' + stat.isFile())
        
        // 是否是目录
        console.log('isDir' + stat.isDirectory())
        
        if(stat.isFile()){
            // 文件大小
            console.log('size:' + stat.size)
            
            // 创建时间
            console.log('crateTime:' + stat.birthtime)
            
            // 修改时间
            console.log('modifiedTime:' + stat.mtime)
        }
    }
})

运行结果如下:

isFile: true
isDirectory: false
size: 181
crateTime: Fri Dec 11 2015 09:43:41 GMT+0800 (CST)
modifiedTime: Fri Dec 11 2015 12:09:00 GMT+0800 (CST)

stat也有一个同步的方法,这里就不多做叙述了。


由于Node.js环境执行的JavaScript代码是服务器代码,所以,绝大多数需要在服务器执行复杂的逻辑代码,所以必须使用异步代码,否则,同步代码在执行时,服务器停止响应,因为JavaScript只有一个执行线程。

相关文章

  • 3-廖雪峰-node-fs模块

    fs文件读取模块 Node.js内置的fs模块就是文件系统模块,负责读写文件。 和所有其它JavaScript模块...

  • Day11 文件系统

    fs模块 Node.js内置的fs模块就是文件系统模块,负责读写文件。和所有其它JavaScript模块不同的是,...

  • Node.js基本模块

    fs模块 node.js内置的fs模块就是文件系统模块,负责读写文件。与所有其他JavaScript模块不同的是,...

  • 6-2 Node.js 文件模块

    Node.js内置的fs模块就是文件系统模块,负责读写文件。 和所有其它JavaScript模块不同的是,fs模块...

  • Node.js之fs用法详解

    Node.js 内置的fs模块就是文件系统模块,负责读写文件。和所有其他JS模块不同的是,fs模块同时提供了异步和...

  • Node.js 内置的fs模块使用

    Node.js 内置的fs模块就是文件系统模块,负责读写文件。和所有其他JS模块不同的是,fs模块同时提供了异步和...

  • 八:Node文件系统管理

    导入:var fs = require("fs") 定义:Node.js 文件系统(fs 模块)模块中的方法均有异...

  • Node学习(8)--文件系统

    Node.js 文件系统 Node 导入文件系统模块(fs)语法如下所示:var fs = require("fs...

  • Node内置模块 - fs

    学习于廖雪峰的官方网站 Node.js内置的fs模块就是文件系统模块,负责读写文件。 和所有其它JavaScrip...

  • Node.js

    一、入门 1.fs模块 search node.js fs 文档(文件系统模块) 2.http模块 search ...

网友评论

      本文标题:Node.js内置的文件系统模块(fs)

      本文链接:https://www.haomeiwen.com/subject/ashclxtx.html