node.js文件系统(fs)

您所在的位置:网站首页 什么叫doc文档 node.js文件系统(fs)

node.js文件系统(fs)

2023-03-22 15:21| 来源: 网络整理| 查看: 265

注意:以下所有示例均是异步语法! 注意:以下所有示例均是异步语法!

创建文件

node.js 允许我们在计算机本地创建文件,例如创建一个 word 文件:

// 引入核心模块(fs) var fs = require('fs') // API fs.writeFile('./hello.doc', 'hello', (error) => { // 创建失败 if(error){ console.log(`创建失败:${error}`) } // 创建成功 console.log(`创建成功!`) }) // 注意:同名/同类型文件多次创建并不会新增,而是覆盖机制

首先引入 node.js 为我们写好的核心模块 fs ,接着使用 writeFile API 进行参数配置,第一个参数(‘./hello.doc’) 为文件位置/类型/命名,第二个参数(‘hello’) 为文件默认内容。

需要注意的是,如果创建文件成功,error 的值是 null,你可以使用 console.log 来查看 error 在何是发生改变。 在这里插入图片描述

打开文件

有必要说一下语法及参数,剩下的按照参数配置进行业务编写即可。

语法

fs.open(path, flags[, mode], callback)

参数:

path:文件的路径flags:文件打开的行为,具体值详表格mode:设置文件模式(权限),文件创建默认权限为 0666(可读,可写)callback:回调函数,带有两个参数如:callback(err, fd) flags描述r以读取模式打开文件。如果文件不存在抛出异常。r+以读写模式打开文件。如果文件不存在抛出异常。rs以同步的方式读取文件。rs+以同步的方式读取和写入文件。w以写入模式打开文件,如果文件不存在则创建。wx类似 ‘w’,但是如果文件路径存在,则文件写入失败。w+以读写模式打开文件,如果文件不存在则创建。wx+类似 ‘w+’, 但是如果文件路径存在,则文件读写失败。a以追加模式打开文件,如果文件不存在则创建。ax类似 ‘a’, 但是如果文件路径存在,则文件追加失败。a+以读取追加模式打开文件,如果文件不存在则创建。ax+类似 ‘a+’, 但是如果文件路径存在,则文件读取追加失败。

打开刚刚创建的 hello.doc 文件:

// 引入核心模块(fs) var fs = require('fs') // API fs.open('./input.txt', 'r', (err,fd) => { // 打开失败 if(err){ console.log(`文件打开失败:${err}`) } // 打开成功 console.log(`文件打开成功!${fd}`) }) 写入内容

我们可以通过 缓冲区(Buffer) / writeFile方法 来为文件写入二进制内容。

语法

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

writeFile 直接打开文件默认是 w 模式,所以如果文件存在,该方法写入的内容会覆盖旧的文件内容。

参数

file:文件名或文件描述符。data:要写入文件的数据,可以是 String(字符串) 或 Buffer(缓冲) 对象。options:该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 ‘w’callback:回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。 // 引入读写核心模块 var fs = require('fs') // 向文件中写入内容(利用缓冲区解决二进制数据问题) var data = '\n I am input content \n' var data = new Buffer(data)//放入缓冲区 // API fs.writeFile('input.txt', data, {flag: 'a'}, (err) => { // 写入失败 if(err){ console.log(`文件写入失败(${err})`) } // 写入成功 console.log(`写入成功!`) })

在这里插入图片描述

追加内容

将数据追加到文件,需要注意的是,如果文件尚不存在则会创建该文件。

语法

fs.appendFile(filename,data,[options],callback); // 引入读写核心模块 var fs = require('fs') // node.js 规定 data 可以是 string / buffer var data = '\n 我是追加的内容! \n' var data = new Buffer(data)//这里使用缓冲区(buffer) // API fs.appendFile('input.txt', data, (err) => { // 追加失败 if(err) throw err // 追加成功 console.log('追加内容成功!') })

在这里插入图片描述

读取内容

读取文件中的内容。

语法

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

参数

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

input.txt 文件内容

我是内容 // 引入读写核心模块 var fs = require('fs') // 读取 input.txt 文件(异步非阻塞式) fs.readFile('input.txt', (err,data) => { // 读取失败 if(err) throw err // 读取成功 console.log('- - - - - - - - - - - - - - - - - - - - -') console.log(`input.txt:${data}`) console.log('- - - - - - - - - - - - - - - - - - - - -') })

在这里插入图片描述

创建目录

创建一个目录,需要注意的是,在 Windows 上,在根目录上使用 fs.mkdir() (即使使用递归参数)也会导致错误。

语法

fs.mkdir(path[, options], callback)

参数

path:文件路径。options:recursive - 是否以递归的方式创建目录,默认为 false。mode - 设置目录权限,默认为 0777。callbac:回调函数,没有参数。 // 引入读写核心模块 var fs = require('fs') // 注意:目录的根必须存在 console.log('即将开始创建...') fs.mkdir("/data/new", (err) => { // 创建失败 if(err) throw err // 创建成功 console.log('文件创建成功!') })

在这里插入图片描述 注意:如果创建的目录已经存在,则会提示如下Error:

Error: EEXIST: file already exists, mkdir 'C:\data\new' 删除目录

删除一个已经存在的目录,需要注意的是,在递归模式中,如果 path 不存在则不报告错误,并且在失败时重试操作。

语法

fs.rmdir(path, callback)

参数

path:文件路径。callback:回调函数。 // 引入读写核心模块 var fs = require('fs') // 删除前一个创建的目录(/data/new) console.log('准备执行删除目录操作') fs.rmdir("/data/new", (err) => { // 删除失败 if(err) throw err // 删除成功 console.log('删除目录成功!') })

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3