node.js之fs模块

摘要:
fs模块fs模块用于对系统文件及目录进行读写操作。toString写法letfs=requirefs.readFile设置utf-8编码写法:letfs=requirefs.readFilefs.writeFile异步地将数据写入到一个文件,如果文件已存在则覆盖该文件。err)console.log//今天天气真好,今天想去哪玩})})执行上面代码,会在1.js文件,后面添加进去内容fs.copyFile异步地将src拷贝到dest。Node.js不保证拷贝操作的原子性。如果在打开目标文件用于写入后发生错误,则Node.js将尝试删除目标文件。
fs模块

fs模块用于对系统文件及目录进行读写操作。

fs中的同步异步

模块中所有方法都有同步和异步两种形式,异步方法中回调函数的第一个参数总是留给异常参数(exception),如果方法成功完成,该参数为null或undefined

fs模块中的方法
  • fs.mkdir(路径,回调函数) : 创建文件夹
  • fs.readdir(路径,回调函数) : 读取文件目录
  • fs.readFile(路径,读取格式,回调函数) : 读取文件
  • fs.writeFile(路径,写入的内容,写入的格式,回调函数) : 写入文件【写入文件属于覆盖】
  • fs.appendFile(路径,追加的内容,写入的格式,回调函数) : 在当前文件后添加内容
  • fs.copyFile(路径1,路径2,回调函数) : 拷贝文件
  • fs.unlink(路径,回调函数) : 删除文件

fs.mkdir

异步地创建目录。 除了可能的异常,完成回调没有其他参数

let fs = require('fs')
fs.mkdir('./1.text',(err)=>{
    if(err){
        throw new Error(err)
    }else{
        console.log('创建成功')
    }
})

执行上面代码,创建文件成功会输出创建成功,当前文件夹下会创建一个1.text文件

同步写法

fs.mkdirSync('./1.text')

fs.readdir

异步的 readdir(3)。 读取目录的内容。 回调有两个参数 (err, files),其中 files 是目录中的文件名的数组(不包括 '.' 和 '..')

let fs = require('fs')
fs.readdir('./',(err, files)=>{
    console.log(err,files)  // null [ '1.js', 'fs.js' ]
})

执行上面代码前,我在当前文件夹下创建了一个1.js文件,调用fs.readdir,这是回调函数的第二个参数会输出当前文件夹下的所有文件名

fs.readFile

异步地读取文件的全部内容。

有一个文件1.js内容如下

// 今天天气真好

和1.js相同目录中有一个fs.js文件,内容如下

let fs = require('fs')
fs.readFile('./1.js',(err, data)=>{
    if(err){
        throw err
    }else{
        console.log(data)
    }
})

运行结果<Buffer 2f 2f 20 e4 bb 8a e5 a4 a9 e5 a4 a9 e6 b0 94 e7 9c 9f e5 a5 bd>,这是原始二进制数据在缓冲区中的内容。

要显示文件内容可以使用toString()或者设置输出编码。

toString写法
let fs = require('fs')
fs.readFile('./1.js',(err, data)=>{
    if(err){
        throw err
    }else{
        console.log(data.toString()) // 今天天气真好
    }
})
设置utf-8编码写法:
let fs = require('fs')
fs.readFile('./1.js','utf-8',(err, data)=>{
    if(err){
        throw err
    }else{
        console.log(data) // 今天天气真好
    }
})

fs.writeFile

异步地将数据写入到一个文件,如果文件已存在则覆盖该文件。 data 可以是字符串或 buffer。

let fs = require('fs')
fs.writeFile('./1.js','今天想去哪玩','utf-8',(err, data)=>{
    if(err) {
        throw err
    }
    fs.readFile('./1.js','utf-8',(err,data)=>{
        if(!err) console.log(data) // 今天想去哪玩
    })
})

执行上面代码,1.js文件夹的内容会被覆盖成今天想去哪玩,然后我们在调用fs.readFile,读取文件夹,可以看到上面输出今天去哪玩,说明我们写入成功了

fs.appendFile

异步地将数据追加到此文件,如果该文件尚不存在,则创建该文件。数据可以是字符串

我们先创建一个1.js,文件内容如下

今天天气真好,

然后我们执行下面的代码

let fs = require('fs')
fs.appendFile('./1.js','今天想去哪玩','utf-8',(err)=>{
    if(err) {
        throw err
    }
    fs.readFile('./1.js','utf-8',(err,data)=>{
        if(!err) console.log(data) // 今天天气真好,今天想去哪玩
    })
})

执行上面代码,会在1.js文件,后面添加进去内容

fs.copyFile

异步地将 src 拷贝到 dest。 默认情况下,如果 dest 已经存在,则覆盖它。 除了可能的异常,回调函数没有其他参数。 Node.js 不保证拷贝操作的原子性。 如果在打开目标文件用于写入后发生错误,则 Node.js 将尝试删除目标文件。

1.js,文件内容如下

今天天气真好,今天想去哪玩

执行下面代码

let fs = require('fs')
fs.copyFile('./1.js','./2.js',(err)=>{
    if(err) {
        throw err
    }
    fs.readFile('./2.js','utf-8',(err,data)=>{
        if(!err) console.log(data) // 今天天气真好,今天想去哪玩
    })
})

上面代码执行,如果没有2.js文件,会先创建一个2.js文件,然后将1.js文件的内容拷贝到2.js,文件中。我们可以看到读取2.js文件会输出今天添加真好,今天想去哪玩

fs.unlink

异步地删除文件或符号链接。 除了可能的异常,完成回调没有其他参数。

let fs = require('fs')
fs.unlink('./1.js',(err)=>{
    if(err) {
        throw err
    }
})

执行上面代码,将会把1.js文件删除

免责声明:文章转载自《node.js之fs模块》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MFC中改变控件的大小和位置(zz)ReportView 如何实现按页码控制报表对象的显示属性下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

js forEach参数详解,forEach与for循环区别,forEach中如何删除数组元素

 壹 ❀ 引 在JS开发工作中,遍历数组的操作可谓十分常见了,那么像for循环,forEach此类方法自然也不会陌生,我个人也觉得forEach不值得写一篇博客记录,直到我遇到了一个有趣的问题,我们来看一段代码: let arr = [1, 2]; arr.forEach((item, index) => { arr.splice(inde...

JavaScript异步编程 ( 一 )

1. 异步编程   Javascript语言的执行环境是"单线程"(single thread)。所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览...

websql的添加和查询

openDatabase 我们可以使用这样简单的一条语句,创建或打开一个本地的数据库对象 vardb =openDatabase('testDB','1.0','Test DB',2*1024*1024); 复制 openDatabase接收五个参数: 数据库名字 数据库版本号 显示名字 数据库保存数据的大小(以字节为单位 ) 回调函数(非必须)...

跨域

跨域:协议、域名、端口、任何一个不一样,都是跨域; 1、浏览器处于安全的考虑限制 2、跨域 3、XHR(XMLHttpRequest)请求 这三个同时满足即为跨域; 原因:来源于跨域安全策略,默认情况,XHR(XMLHttpRequest)对象只能访问与包含它的页面位于同一个域中的资源,这种安全策略可以预防恶意行为; 解决思路:只要发出的不是XHR(XML...

g_signal_connect 与 g_signal_connect_swapped

在 2.0 版,信号系统已从 GTK 移到 GLib,因此在函数和类型的说明中有前缀 "g_" 而不是 "gtk_"。我们不打算介绍 GLib 2.0 信号系统相对 GTK 1.2 信号系统扩展的细节。 在我们详细分析helloworld程序之前,我们会讨论信号和回调函数。GTK 是一个事件驱动的工具包,意味着它会等在 gtk_main() 那里,直到下...

C#开发BIMFACE系列37 网页集成开发1:审图系统中加载模型或图纸

系列目录 【已更新最新开发文章,点击查看详细】 在之前的《C#开发BIMFACE系列》中主要介绍了BIMFACE平台提供的服务端API接口的封装开发与测试过程。 服务端API测试通过后,需要根据具体业务的需求集成到管理系统中,配合BIMFACE提供的前端JavaScript API的使用可以很轻松的集成到网页中实现模型/图纸的加载、浏览、批注对比等功能。...