1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > node.js文件系统(fs) - 创建文件 打开文件 写入数据 追加数据 读取数据 创建目录 删除目录

node.js文件系统(fs) - 创建文件 打开文件 写入数据 追加数据 读取数据 创建目录 删除目录

时间:2024-05-04 08:52:27

相关推荐

node.js文件系统(fs) - 创建文件 打开文件 写入数据 追加数据 读取数据 创建目录 删除目录

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

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

创建文件

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

// 引入核心模块(fs)var fs = require('fs')// APIfs.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)

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

// 引入核心模块(fs)var fs = require('fs')// APIfs.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)//放入缓冲区// APIfs.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 / buffervar data = '\n 我是追加的内容! \n'var data = new Buffer(data)//这里使用缓冲区(buffer)// APIfs.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('删除目录成功!')})

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。