NodeJS -返回目录中的最后一个目录并在其旁边创建一个新目录

0lvr5msh  于 2022-12-29  发布在  Node.js
关注(0)|答案(1)|浏览(117)

假设我们有这样一个文件夹路径...

C:\path\to\MyFolder

在这个文件夹中,包含了许多子目录,例如...

<MyFolder>
|- folder1
|- folder2
|- folder3
|- folder4
|- folder5

如何返回上一个子文件夹并按照文件夹的编号模式在其旁边创建一个新的子文件夹?
所以说这样的话...

<MyFolder>
|- folder1
|- folder2
|- folder3
|- folder4
|- folder5 // <-- last subdirectory
|- folder6 // <-- new directory created following the number pattern

或者这个...

<MyFolder>
|- folder1
|- folder2
|- folder3
|- folder4
|- folder5
|- folder6 // <-- last subdirectory
|- folder7 // <-- new directory created following the number pattern

我尝试过this issue的解决方案,但不幸的是它是用ESM编写的,我使用CJS,ESM到CJS的转换器在这种情况下似乎不起作用。
有人能帮帮忙吗?希望每个人都明白我在做什么。

tpxzln5u

tpxzln5u1#

如果模式总是固定的(即folderN,N表示为一个数字),那么你可以得到所有的目录,然后转换每个目录,并创建一个数字数组。通过这个数组,你可以找到最大的数字,并预测下一个候选数字。
此函数可以给予您了解发生了什么:

const { readdir, mkdir } = require('fs/promises');

const createDirectory = async source => {
  const foldersNumber = (await readdir(source, { withFileTypes: true }))
    .filter(dirent => dirent.isDirectory())
    .map(dirent => parseInt(dirent.name.replace('folder', '')));
  
  return mkdir(`${source}/folder${Math.max(...foldersNumber) + 1}`);
}

相关问题