读取目录
语法
一下为读取目录的语言格式:
fs.readdir(path, callback)
其实它帮我们也封装了不同系统下的它目录读取的的这个方式
参数
参数使用说明如下:
- path - 文件路径
- callback - 回调函数,回调函数带有俩个参数err,files;err为错误信息,files为目录下的文件数组列表。
首先获取
fs模块
let fs = require('fs')
示例
let fs = require('fs')fs.readdir('./文件写入',function(err,files){//当前目录的fs1文件夹,没有得创建if(err){console.log(err)}else{console.log(files)}})
结果:
[]
这样你就可以快速的获取这个目录所有的信息,读取到后能使用循环一个一个可以进行查找、读取
在里面导入模块
文件写入 > 创建lcfs.js
let fs = require('fs')function myFsReadFile(path){return new Promise(function(resolve,reject){fs.readFile(path,{flag:'r',encoding:'utf-8'},function(err,data){if(err){reject(err)}else{resolve(data)}})})}function myFsWriteFile(path,w,wm){return new Promise(function(resolve,reject){fs.writeFile(path,w,{flag:wm,encoding:'utf-8'},function(err){if(err){reject(err)}else{resolve(err)}})})}module.exports = {myFsReadFile,myFsWriteFile}
导出
let {myFsReadFile,myFsWriteFile} = require('../文件写入/lcfs')
写入文件夹中完整的结构:
let fs = require('fs')const { text } = require('stream/consumers')let {myFsReadFile,myFsWriteFile} = require('../文件写入/lcfs')fs.readdir('../文件写入',function(err,files){if(err){console.log(err)}else{console.log(files)let txtPath = 'all.txt'//循环的操作files.forEach(async function(filename,i){//item:filename;index(索引值):i//就可以读里面的内容let content = await myFsReadFile('../文件写入/' + filename)await myFsWriteFile(txtPath,content,'a')})}})
这样子我们就可以读取文件里面所有内容了
你需要查找文件里面的内容,也可以修改里面的内容:
let fileName = 'index.js'//循环操作(查找)files.forEach(async function(filename,i){let content = await myFsReadFile('../文件写入/' + filename)if(fileName === filename){console.log(filename)}})
删除目录
语法
一下为删除目录的语法格式:
fs.rmdir(path,callback)
参数
- path - 文件路径
- callback - 回调函数
示例
let fs = require('fs')function deleteDirOne(path){return new Promise(function(resolve,reject){fs.rmdir(path,function(){console.log('删除成功')})})}deleteDirOne('./abc')
我们输入点内容都做不了这个事情
输入输出
导入一个包readline
var readline = require('readline')
创建一个实例接口
//实例化接口对象let rl = readline.createInterface({//输入输出都靠process这个里面的属性来做input: process.stdin,output: process.stdout,})
输入什么内容就可以以
事件的方式
来进行操作
question方法
提问事件
//question方法rl.question("你的名字是?",function(answer){//answer:回答。可以输入内容回答console.log("我的名字是",answer);//不加close,则程序不会结束rl.close();})
如果我想关,就可以退出进程
//close事件监听rl.on("close",function{//结束程序process.exit(0)})
用readLine和fs.writeFile来创建package.json文件
let readline = require('readline')let {deleteDirOne} = require('./deleteDir')let {myFsWriteFile} = require('../文件写入/lcfs');const fs = require('fs');//实例化接口对象let rl = readline.createInterface({//输入输出都靠process这个里面的属性来做input: process.stdin,output: process.stdout,})//question方法/* rl.question("你想要删除的目录是?",function(answer){//answer:回答。可以输入内容回答deleteDirOne(answer)//不加close,则程序不会结束rl.close();})//close事件监听rl.on("close",function(){//结束程序process.exit(0)}) *///设置r1,提问事件async function createPackage(PackName){let name = await lcQuestion("你的包名叫什么?");let description = await lcQuestion("你的包如何描述?")let main = await lcQuestion("你的包主程序入口文件是什么?")let author = await lcQuestion("你的包作者是谁?")//这个判断目前有影响,建议删除/* if(PackName === "package.json"){//如果有package.json文件就删除这个文件await fs.unlink(PackName,function(){//删除文件异步API,记得async的方法里面,得用await不然不会停下来执行console.log('删除成功')//提示信息,连着创建使用等同于没有})}else{//没有文件就创建文件let content = `{"name": "${name}","version": "1.0.0","description": "${description}","main": "${main}","script": {"test": "echo \\"Error: no test specified\\" && exit 1"},"keywords": ["'LAOCHEN'"],"author": "'${author}'","license": "ISC","dependencies": {}}`await myFsWriteFile(PackName,content,'w')//这个await与上面一致要求} */let content = `{"name": "${name}","version": "1.0.0","description": "${description}","main": "${main}","script": {"test": "echo \\"Error: no test specified\\" && exit 1"},"keywords": ["'LAOCHEN'"],"author": "'${author}'","license": "ISC","dependencies": {}}`await myFsWriteFile(PackName,content,'w')//最终写完内容,关闭输入进程rl.close()}function lcQuestion(name){return new Promise(function(resolve,reject){rl.question(name,function(answer){resolve(answer)})})}createPackage('package.js')rl.on('close',function(){process.exit(0)})
效果(myFsWriteFile从哪里来可以看文件写入的那章):
你的包名叫什么?nodeReadLine_Learn你的包如何描述?输入输出专用包你的包主程序入口文件是什么?input.js你的包作者是谁?cty
创建的package包
{"name": "nodeJSReadLine_learn","version": "1.0.0","description": "输入输出专用包","main": "input.js","script": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": ["'LAOCHEN'"],"author": "'cty'","license": "ISC","dependencies": {}}
可以用这种来写文件内容
