读取目录
语法
一下为读取目录的语言格式:
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": {}
}
可以用这种来写文件内容