//路径拼接
const path = require('path');
const mypath = path.join(__dirname, '//one//', '//two//');
// console.log(mypath); //H:\study_home\nodejs\learn_home\learn01\one\two\
//将相对路径解析成绝对路径
const str = './02.js';
const temp = path.resolve(str);
// console.log(temp); //H:\study_home\nodejs\learn_home\learn01\02.js
//接收一个合法的路径字符串,转换成一个对象
const pathObj = path.parse(temp);
// console.log(pathObj);
/*{
root: 'H:\\',
dir: 'H:\\study_home\\nodejs\\learn_home\\learn01',
base: '02.js',
ext: '.js',
name: '02'
}*/
/* shift+alt+a 块级注释
ctrl + D 选中替换
*/
//接收一个路径对象,转换成一个字符串路径
const s = path.format(pathObj);
// console.log(s); //H:\study_home\nodejs\learn_home\learn01\02.js
//----------------------------------------------------
//读取文件
const fs = require('fs');
//读取文件 input
fs.readFile('./test.txt', (err, data) => {
if(err) throw err;
// console.log(data) //<Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 21 21 21>
// console.log(data.toString());
})
//写入文件 output
/* fs.writeFile('./test.txt', 'JavaScript', (err, data) => {
if(err) throw err;
// console.log(data); //undefined
console.log('finish');
}) */
//文件追加方式1:appendFile('path', content, (err) => {})
/* fs.appendFile('./test.txt', 'java', (err) => {
if(err) throw err;
console.log('susscess');
}) */
//方式2
/* fs.writeFile('./test.txt', 'php', {flag: 'a'}, (err) => {
if(err) throw err;
console.log('finish');
}) */
//先读后写 (有异常catch) 类似于同步拷贝
/* let data = fs.readFileSync('./test.txt', 'utf8');
// console.log(data);
//写入b.txt
fs.writeFileSync('./b.txt', data); */
/*
同步:fs.readFileSync()与fs.writeFileSync()会堵塞下面的代码
异步:fs.readFile()与fs.writeFile()不会堵塞下面的代码
*/
//接收命令行参数就,根据该目录,读取目录下的所有文件并输出(遍历文件夹)
const path = require('path');
const fs = require('fs');
//1.接收命令行 node 02.js .//xxx//xxx//xxx
//2.修正该路径 path.resolve(process.agrv[2])
let inputPath = path.resolve(process.argv[2]);
//3.判断该路径是否存在 fs.access(fs.constants.F_OK)
//此处应用递归调用封装函数
try{
fs.accessSync(inputPath, fs.constants.F_OK);
/* 4.遍历该文件夹
4.1 function(dir){
判断该路径是文件还是文件夹,如果是文件,输出,如果是文件夹,读取子文件夹,
如果是文件夹继续调用自己
}
*/
let state = fs.statSync(inputPath);
if(state.isFile()){
console.log(inputPath);
}else if(state.isDirectory()){
let files = fs.readdirSync(inputPath);
console.log(files);
}
}catch(e){
console.log('该文件或文件夹不存在');
}