[nodejs]fs文件模块-练习

创建一个upload文件夹

const fs = require('fs');

// 创建文件夹
const mkdir = (path) => new Promise((resolve) => {
  fs.mkdir(path, (err) => {
    resolve({ err });
  });
});
// 获取文件状态
const getStat = (path) => new Promise((resolve) => {
  fs.stat(path, (err, stat) => {
    resolve({ err, stat });
  })
});
// 删除文件
const unlink = (path) => new Promise((resolve) => {
  fs.unlink(path, (err) => {
    resolve({ err })
  })
});

const createDir = async (path) => {
  const { err, stat } = await getStat(path);
  if (!err && stat.isDirectory()) {
    console.log(`directory ${path} is already exist.`);
    return;
  }
  if (!err && stat.isFile()) {
    console.log(`unlink file ${path}`);
    await unlink(path);
  }
  const { err: mkdirErr } = await mkdir(path);
  if (!mkdirErr) {
    console.log(`create directory ${path}`);
  } else {
    console.error(`create directory error ${mkdirErr.toString()}`);
  }
};

createDir('./upload');

找出目录wwwroot下的所有目录

const fs = require('fs');

// 读取目录下的所有目录和文件
const readdir = (path) => new Promise((resolve) => {
  fs.readdir(path, (err, files) => {
    resolve({ err, files });
  });
});
// 获取文件和目录状态
const getStat = (path) => new Promise((resolve) => {
  fs.stat(path, (err, stat) => {
    resolve({ err, stat });
  });
});

const getDirectory = async (path) => {
  const { err, files } = await readdir(path);
  if (err) {
    console.log(`${path} is not a directory`);
    return;
  }
  const directorys = [];
  for (let i = 0; i < files.length; i++) {
    const file = files[i];
    const filePath = `${path}/${file}`;
    const { err, stat } = await getStat(filePath);
    if (!err && stat.isDirectory()) {
      directorys.push(file);
    }
  }
  console.log(directorys);
  return directorys;
};

getDirectory('./wwwroot');
原文地址:https://www.cnblogs.com/zhoulixue/p/15427640.html