当前位置:K88软件开发文章中心编程语言JavaScriptJS02 → 文章内容

Node.js 文件系统

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-11 7:01:05

Node.js 文件系统Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。Node 导入文件系统模块(fs)语法如下所示:var fs = require("fs")异步和同步Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。建议大家使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。实例创建 input.txt 文件,内容如下:k88.net官网地址:www.k88.net文件读取实例创建 file.js 文件, 代码如下:var fs = require("fs");// 异步读取fs.readFile('input.txt', function (err, data) { if (err) { return console.error(err); } console.log("异步读取:





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





" + data.toString());console.log("程序执行完毕。");以上代码执行结果如下:$ node file.js 同步读取:





k88.net官网地址:www.k88.net文件读取实例程序执行完毕。异步读取:





k88.net官网地址:www.k88.net文件读取实例接下来,让我们来具体了解下 Node.js 文件系统的方法。打开文件语法以下为在异步模式下打开文件的语法格式:fs.open(path, flags[, mode], callback)参数参数使用说明如下:path - 文件的路径。flags - 文件打开的行为。具体值详见下文。mode - 设置文件模式(权限),文件创建默认权限为 0666(可读,可写)。callback - 回调函数,带有两个参数如:callback(err, fd)。flags 参数可以是以下值:Flag描述r以读取模式打开文件。如果文件不存在抛出异常。r+ 以读写模式打开文件。如果文件不存在抛出异常。rs以同步的方式读取文件。rs+以同步的方式读取和写入文件。w以写入模式打开文件,如果文件不存在则创建。wx类似 'w',但是如果文件路径存在,则文件写入失败。w+以读写模式打开文件,如果文件不存在则创建。wx+类似 'w+', 但是如果文件路径存在,则文件读写失败。a以追加模式打开文件,如果文件不存在则创建。ax类似 'a', 但是如果文件路径存在,则文件追加失败。a+以读取追加模式打开文件,如果文件不存在则创建。ax+类似 'a+', 但是如果文件路径存在,则文件读取追加失败。实例接下来我们创建 file.js 文件,并打开 input.txt 文件进行读写,代码如下所示:var fs = require("fs");// 异步打开文件console.log("准备打开文件!");fs.open('input.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("文件打开成功!"); });以上代码执行结果如下:$ node file.js 准备打开文件!文件打开成功!获取文件信息语法以下为通过异步模式获取文件信息的语法格式:fs.stat(path, callback)参数参数使用说明如下:path - 文件路径。callback - 回调函数,带有两个参数如:(err, stats), stats 是 fs.Stats 对象。fs.stat(path)执行后,会将stats类的实例返回给其回调函数。可以通过stats类中的提供方法判断文件的相关属性。例如判断是否为文件:var fs = require('fs');fs.stat('/Users/liuht/code/itbilu/demo/fs.js', function (err, stats) { console.log(stats.isFile());         //true})stats类中的方法有:方法描述stats.isFile()如果是文件返回 true,否则返回 false。stats.isDirectory()如果是目录返回 true,否则返回 false。stats.isBlockDevice()如果是块设备返回 true,否则返回 false。stats.isCharacterDevice()如果是字符设备返回 true,否则返回 false。stats.isSymbolicLink()如果是软链接返回 true,否则返回 false。stats.isFIFO()如果是FIFO,返回true,否则返回 false。FIFO是UNIX中的一种特殊类型的命令管道。stats.isSocket()如果是 Socket 返回 true,否则返回 false。实例接下来我们创建 file.js 文件,代码如下所示:var fs = require("fs");console.log("准备打开文件!");fs.stat('input.txt', function (err, stats) { if (err) { return console.error(err); } console.log(stats); console.log("读取文件信息成功!"); // 检测文件类型 console.log("是否为文件(isFile) ? " + stats.isFile()); console.log("是否为目录(isDirectory) ? " + stats.isDirectory()); });以上代码执行结果如下:$ node file.js 准备打开文件!{ dev:





16777220, mode:





33188, nlink:





1, uid:





501, gid:





20, rdev:





0, blksize:





4096, ino:





40333161, size:





61, blocks:





8, atime:





Mon Sep 07 2015 17:





43:





55 GMT+0800 (CST), mtime:





Mon Sep 07 2015 17:





22:





35 GMT+0800 (CST), ctime:





Mon Sep 07 2015 17:





22:





35 GMT+0800 (CST) }读取文件信息成功!是否为文件(isFile) ? true是否为目录(isDirectory) ? false写入文件语法以下为异步模式下写入文件的语法格式:fs.writeFile(file, data[, options], callback)writeFile 直接打开文件默认是 w 模式,所以如果文件存在,该方法写入的内容会覆盖旧的文件内容。参数参数使用说明如下:file - 文件名或文件描述符。data - 要写入文件的数据,可以是 String(字符串) 或 Buffer(缓冲) 对象。options - 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 'w'callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。实例接下来我们创建 file.js 文件,代码如下所示:var fs = require("fs");console.log("准备写入文件");fs.writeFile('input.txt', '我是通 过fs.writeFile 写入文件的内容', function(err) { if (err) { return console.error(err); } console.log("数据写入成功!"); console.log("--------我是分割线-------------") console.log("读取写入的数据!"); fs.readFile('input.txt', function (err, data) { if (err) { return console.error(err); } console.log("异步读取文件数据:





" + data.toString()); });});以上代码执行结果如下:$ node file.js

[1] [2] [3] [4]  下一页


Node.js 文件系统