在 Node.js 中使用資料夾

Node.js 的 fs 核心模組提供了許多方便的方法,可以用來處理資料夾。

檢查資料夾是否存在

使用 fs.access()(以及其基於 Promise 的對應方法 fsPromises.access())來檢查資料夾是否存在以及 Node.js 是否有許可權訪問它。

建立新資料夾

使用 fs.mkdir()fs.mkdirSync()fsPromises.mkdir() 來建立一個新資料夾。

const  = ('node:fs');

const  = '/Users/joe/test';

try {
  if (!.()) {
    .();
  }
} catch () {
  .();
}

讀取目錄內容

使用 fs.readdir()fs.readdirSync()fsPromises.readdir() 來讀取目錄內容。

這段程式碼讀取資料夾的內容,包括檔案和子資料夾,並返回它們的相對路徑

const  = ('node:fs');

const  = '/Users/joe';

.();

你可以獲取完整路徑

fs.readdirSync(folderPath).map( => {
  return path.join(folderPath, );
});

你還可以過濾結果,只返回檔案,排除資料夾

const  = ('node:fs');

const  =  => {
  return .().();
};

.(folderPath)
  .( => {
    return path.join(folderPath, );
  })
  .();

重新命名資料夾

使用 fs.rename()fs.renameSync()fsPromises.rename() 來重新命名資料夾。第一個引數是當前路徑,第二個是新路徑

const  = ('node:fs');

.('/Users/joe', '/Users/roger',  => {
  if () {
    .();
  }
  // done
});

fs.renameSync() 是同步版本

const  = ('node:fs');

try {
  .('/Users/joe', '/Users/roger');
} catch () {
  .();
}

fsPromises.rename() 是基於 Promise 的版本

const  = ('node:fs/promises');

async function () {
  try {
    await .('/Users/joe', '/Users/roger');
  } catch () {
    .();
  }
}
();

刪除資料夾

使用 fs.rmdir()fs.rmdirSync()fsPromises.rmdir() 來刪除資料夾。

const  = ('node:fs');

.(dir,  => {
  if () {
    throw ;
  }

  .(`${dir} is deleted!`);
});

要刪除一個包含內容的資料夾,請使用帶有 { recursive: true } 選項的 fs.rm() 來遞迴刪除內容。

{ recursive: true, force: true } 選項可以在資料夾不存在時忽略異常。

const  = ('node:fs');

.(dir, { : true, : true },  => {
  if () {
    throw ;
  }

  .(`${dir} is deleted!`);
});