Node.js中的fs 模块

//  file system 是node的文件处理模块

const fs = require('fs')
const path = require('path')
// 1. readFile 此函数用来异步读取文件,并在回调中可以获取读取文件结果
// 这个方法会将一个文件的全部内容都读到内存中,适合于体积小的文本,如果文件有数百MB大小,则建议使用stream
let filePath = path.join(__dirname, 'test.txt')

fs.readFile(filePath, 'utf8', ( error, data) => {
    console.log('readFile:', error, data)
})

// 1.1 readFileSync 是readFile 的同步版本可以直接返回读取结果
const data1 = fs.readFileSync(filePath,  'utf8')
// const data1 = fs.readFileSync(filePath, {encoding:'UTF-8'} )
console.log('readFileSync:', data1)

// 2. writeFile 写入文件,第一参数为文件名,如果不存在则会尝试创建它
let writePath = path.join(__dirname, 'test1.txt')
let data2 = '这是一个写入的数据'

// fs.writeFile(writePath, data2 , 'utf8', ( res ) => {
//     console.log('writeFile:', res)
// })

let writePath1 = path.join(__dirname, 'test2.txt')
// 2.1 writeFileSync 写入文件,writeFile 的同步版本
// const data3 = fs.writeFileSync( writePath1, data2, 'utf8')
// console.log('writeFileSync:', data3)

// 3. stat(path, callback) 用来获取文件的状态,通常在调用open(),read() 等方法之前,用fs.stat方法
// 判断该文件是否存在,如果存在就会返回文件状态信息
fs.stat(filePath, (error, result) => {
    // console.log(result)
})
// 3.1 同步版本
const data4 = fs.statSync(filePath)

// 4. readdir(path, function(error, result)) 读取目录下文件及目录
fs.readdir(__dirname, (error, result) => {
    console.log('readdir:', error,result)
    // [ 'buffer.js', 'fs.js', 'test.txt' ]
})

// 4.1 获取目录下所有子文件
function getDirFile(dirPath){
    fs.readdir(dirPath, (error, result) =>{
        console.log('result',result)
        for (let item of result) {
            const fileStatus = fs.statSync(path.join(dirPath, item))
            // console.log('fileStatus:',fileStatus)
        //    console.log(fileStatus.isDirectory()) // 判断是否为文件夹
            if(fileStatus.isDirectory()){
                getDirFile(path.join(dirPath, item))
            }
        }
    })
}
getDirFile(__dirname)

原文地址:https://www.cnblogs.com/liea/p/12079302.html

时间: 2024-10-13 00:30:21

Node.js中的fs 模块的相关文章

node.js中的fs.rename()方法

node.js 中的fs.rename()模块 var fs=require('fs');//node.js的核心模块 原生模块.修改文件名称,可更改文件的存放路径 方法说明 : 修改文件名称,可更改文件的存放路径 基本语法 fs.rename(oldFile, newFile, [callback(err)]) router.post('/addAction',upload.single('ppic'),function(req, res, next) { var arr=req.file.o

node.js中使用net模块创建服务器和客户端

1.node.js中net模块创建服务器(net.createServer) // 将net模块 引入进来 var net = require("net"); // 创建一个net.Server用来监听,当连接进来的时候,就会调用我们的函数 // client_sock,就是我们的与客户端通讯建立连接配对的socket // client_sock 就是与客户端通讯的net.Socket var server = net.createServer(function(client_soc

node.js 中的npm模块版本管理

semver npm 中的模块版本都需要遵循 semver 2.0 的语义化版本规则. 版本格式:主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正. 先行版本号及版本编译信息可以加到"主版本号.次版本号.修订号"的后面,作为延伸. 然后基于语义化的版本,我们在选择版本的时候就可以对依赖进行版本的控制: dependencies: { "express&quo

Node.js权威指南 (12) - Node.js中的其他模块

12.1 使用dns模块解析域名 / 313 12.1.1 使用resolve方法将域名解析为DNS记录 / 313 12.1.2 使用lookup方法查询IP地址 / 315 12.1.3 使用reverse方法反向解析IP地址 / 316 12.1.4 dns模块中的各种错误代码 / 31712.2 使用punycode模块转换punycode编码 / 31812.3 使用os模块获取操作系统信息 / 32012.4 使用readline模块逐行读取流数据 / 323 12.4.1 创建 I

在node.js中使用mongose模块

对象与文档相对应 创建项目目录,用root进入 # mkdir /home/test/part9/ 直接# npm install mongoose,报错如下 ../node_modules/nan/nan.h:316:47: error: ‘REPLACE_INVALID_UTF8’ is not a member of ‘v8::String’ static const unsigned kReplaceInvalidUtf8 = v8::String::REPLACE_INVALID_UT

node.js第二天之模块

一.模块的定义 1.在Node.js中,以模块为单位划分所有功能,并且提供了一个完整的模块加载机制,这时的我们可以将应用程序划分为各个不同的部分. 2.狭义的说,每一个JavaScript文件都是一个模块:而多个JavaScript文件之间可以相互require,他们共同实现了一个功能,他们整体对外,又称为一个广义上的模块. 3.Node.js中,一个JavaScript文件中定义的变量.函数,都只在这个文件内部有效.当需要从此JS文件外部引用这些变量.函数时,必须使用exports对象进行暴露

记一次在node.js中使用crypto的createCipheriv方法进行加密时所遇到的坑

Node.js的crypto模块提供了一组包括对OpenSSL的哈希.HMAC.加密.解密.签名,以及验证等一整套功能的封装.具体的使用方法可以参考这篇文章中的描述:node.js_crypto模块. 本文重点介绍在使用createCipheriv方法时所遇到的坑.对应的解密算法createDecipheriv应该是一样的问题. 按照文档中的描述,createCipheriv方法接受三个参数:algorithm用于指定加密算法,如aes-128-ecb.aes-128-cbc等:key是用于加密

log4js-Node.js中的日志管理模块使用与封装

开发过程中,日志记录是必不可少的事情,尤其是生产系统中经常无法调试,因此日志就成了重要的调试信息来源. Node.js,已经有现成的开源日志模块,就是log4js,源码地址:点击打开链接 项目引用方法: npm install log4js 1.配置说明(仅以常用的dateFile日志类型举例,更多说明参考log4js-wiki): { "appenders": [ // 下面一行应该是用于跟express配合输出web请求url日志的 {"type": "

node.js中模块,require

在php,C++中都有命名空间的概念,命名空间主要是用来解决引入文件存在函数,类,变量重名的问题,在node.js中,没有命名空间这么复杂的概念,在node中,有模块的概念,也就是将功能性的代码都放在一起.然后引入,在本文件中使用.这种不会出现函数名,变量重名问题,在引入的模块中,都是以导入的方式注册的.看下面的例子: //circle.js var pi = 3.14; //计算圆的周长 exports.circle = function(r) { return 2 * pi * r; } /