tnblog
首页
登录

Node.js之文件系统(大神略过)

1268人阅读 2020/4/9 17:23 总访问:77620 评论:0 收藏:0 手机
分类: 随笔
前言:hello 又是我  你们熟悉的小付  今天给大家分享的是有关Node.js文件系统的读取
话不多说直接开干


Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node 导入文件系统模块(fs)语法如下所示:
var fs=require("fs");




异步和同步
Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。
异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。
建议大家使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。


我们来看一个简单的示例

var  fs = require("fs");
// 异步读取
fs.readFile('放你所创建文件的路径', function (err, data) {
 if(err){
        return console.error(err);
    }
     console.log("异步读取:"+ data.toString());
 });
// 同步读取
var data = fs.readFileSync('放你所创建文件的路径');
console.log("同步读取:" +data.toString());
console.log("程序执行完毕。");
下面我们来说一下如何打开文件 及打开文件的语法
以下为在异步模式下打开文件的语法格式:
fs.open(path, flags[, mode], callback);
参数使用说明如下:

path - 文件的路径。

flags - 文件打开的行为。具体值详见下文。

mode - 设置文件模式(权限),文件创建默认权限为 0666(可读,可写)。

callback - 回调函数,带有两个参数如:callback(err, fd)。
Flag    描述
r  以读取模式打开文件。如果文件不存在抛出异常。
r+ 以读写模式打开文件。如果文件不存在抛出异常。
rs 以同步的方式读取文件。
rs+    以同步的方式读取和写入文件。
w  以写入模式打开文件,如果文件不存在则创建。
wx 类似 'w',但是如果文件路径存在,则文件写入失败。
w+ 以读写模式打开文件,如果文件不存在则创建。
wx+    类似 'w+', 但是如果文件路径存在,则文件读写失败。
a  以追加模式打开文件,如果文件不存在则创建。
ax 类似 'a', 但是如果文件路径存在,则文件追加失败。
a+ 以读取追加模式打开文件,如果文件不存在则创建。
ax+    类似 'a+', 但是如果文件路径存在,则文件读取追加失败。
下面我们来 举一个例子

var fs = require("fs");

console.log("准备打开文件!");
fs.stat('你创建文件的路径', function (err, stats) {
    if (err) {
        return console.error(err);
    }
    console.log(stats);
    console.log("读取文件信息成功!");

    // 检测文件类型
    console.log("是否为文件(isFile) ? " + stats.isFile());
    console.log("是否为目录(isDirectory) ? " + stats.isDirectory());
});



写入文件
以下为异步模式下写入文件的语法格式:

fs.writeFile(file, data[, options], callback)



参数使用说明如下:

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

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

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

callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。


var fs = require("fs");
console.log("准备写入文件!");
fs.writeFile('创建文件的路径','我是通过writeFile写入的文件',function (err) {
    if(err) {
      return  console.error(err);
    }
    console.log("文件写入成功!");
    console.log("--------我是分割线-------------");
    console.log("读取写入的数据!");
    fs.readFile('创建文件的路径',function (err,data) {
        if(err){
            return console.error(err);
        }
        console.log("异步读取文件数据",data.toString());
    });
});

温馨提示:写入文件的时候最好是找一个没有用的文件或者是新建一个文件  
我就是随便找了一个文件写入 结果才发现随便找的文件居然是我的笔记最后导致里面的东西全部没有了
现在还在苦逼的补笔记中

以下为异步模式下读取文件的语法格式:
fs.read(fd, buffer, offset, length, position, callback) 参数使用说明如下:
fd - 通过 fs.open() 方法返回的文件描述符。
buffer - 数据写入的缓冲区。
offset - 缓冲区写入的写入偏移量。
length - 要从文件中读取的字节数。
position - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。
callback - 回调函数,有三个参数err, bytesRead, buffer,err 为错误信息, bytesRead 表示读取的字节数,buffer 为缓冲区对象。

例子:
var fs = require("fs");
var buf = new Buffer.alloc(1024);

console.log("准备打开已存在的文件!");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
   console.log("文件打开成功!");
   console.log("准备读取文件:");
   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).toString());
       }
   });
});
想知道结果的小伙伴可以自己去尝试一下 会有意想不到的结果

其他的在这里我就过多介绍了 有想要了解更多的可以参考以下网址:
https://www.runoob.com/nodejs/nodejs-fs.html


每日一笑 今天你笑了吗?
1.两个程序员在聊天:
“我昨天碰到个辣妹。
我把她带回家,
马上就开始如饥似渴地亲吻,
她就坐在我的键盘上,
然后……”“你在家里也有台电脑?CPU是什么型号的?”
2.一个程序员在海滨游泳时溺水身亡。
他死前拼命的呼救,
当时海滩上有许多救生员,
但是没有人救他。
因为他一直大喊“F1!”“F1!”,
谁都不知道“F1”究竟是什么意思。
好了综上就是今天要分享的全部内容  感谢老铁们耐心的观看




评价
每一段旅程,都是一种领悟
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2020TNBLOG.NET
技术交流:群号677373950
欢迎加群交流技术