首頁  >  文章  >  web前端  >  nodejs實作選擇資料夾

nodejs實作選擇資料夾

WBOY
WBOY原創
2023-05-28 13:47:561368瀏覽

Node.js是一種流行的後端JavaScript程式語言,被廣泛應用於建構Web應用、API、命令列工具等。在Node.js中,有時候需要讓使用者選擇資料夾,以便在程式中進行讀取、寫入和修改等操作。本文將介紹如何使用Node.js實作選擇資料夾。

一、使用原生Node.js實作選擇資料夾

Node.js提供了fs模組來操作檔案系統。在fs模組中,有一個方法叫做readdir,可以讀取一個目錄下的所有檔案和子目錄。以下是使用原生Node.js實作選擇資料夾的程式碼範例:

const fs = require('fs');
const path = require('path');

let dir = process.argv[2] || '.';

fs.readdir(dir, (err, files) => {
  if (err) throw err;
  console.log('请选择一个文件夹:');
  files.forEach(file => {
    let filePath = path.join(dir, file);
    fs.stat(filePath, (err, stats) => {
      if (err) throw err;
      if (stats.isDirectory()) {
        console.log(`[${file}]`);
      } else {
        console.log(file);
      }
    });
  });
  process.stdin.resume();
  process.stdin.setEncoding('utf8');
  process.stdin.on('data', data => {
    data = data.trim();
    let filePath = path.join(dir, data);
    fs.stat(filePath, (err, stats) => {
      if (err) throw err;
      if (stats.isDirectory()) {
        process.stdin.pause();
        console.log(`已选择[${data}]文件夹!`);
      } else {
        console.log(`${data}不是一个有效的文件夹!`);
      }
    });
  });
});

程式碼先使用fs.readdir方法讀取使用者指定的資料夾,然後使用fs.stat方法判斷每個檔案是不是資料夾。最後使用process.stdin來取得使用者的輸入,如果使用者輸入的是資料夾,則表示使用者選擇了該資料夾。

二、使用第三方模組實作選擇資料夾

除了使用原生Node.js,還可以使用第三方模組來實作選擇資料夾。以下介紹兩種常見的選擇資料夾的第三方模組。

  1. inquirer

inquirer是一個強大的互動式命令列使用者介面庫,可以像開發網頁表單一樣在命令列上建立互動式選擇。以下是使用inquirer選擇資料夾的程式碼範例:

const inquirer = require('inquirer');
const fs = require('fs');
const path = require('path');

let dirs = fs
  .readdirSync('.')
  .filter(file => {
    return fs.statSync(file).isDirectory();
  })
  .map(dir => {
    return { name: `[${dir}]`, value: dir };
  });

inquirer
  .prompt([
    {
      type: 'list',
      name: 'dir',
      message: '请选择一个文件夹:',
      choices: dirs,
    },
  ])
  .then(answer => {
    console.log(`已选择[${answer.dir}]文件夹!`);
  });

程式碼使用fs.readdirSync方法讀取目前目錄下的所有資料夾,並使用filter方法篩選出所有資料夾。然後透過map方法將每個資料夾封裝成一個對象,使得可以在inquirer的選擇清單中顯示出資料夾名字。最後,使用inquirer.prompt方法彈出一個選擇列表,讓使用者選擇資料夾,並使用answer.dir來取得使用者選擇的資料夾名字。

  1. file-tree-select

file-tree-select是一個建構在inquirer和node-file-tree上的檔案選擇器外掛。它可以在命令列中展示目前目錄下的檔案樹,使用者可以透過鍵盤的上下箭頭和空白鍵來選擇資料夾。以下是使用file-tree-select選擇資料夾的程式碼範例:

const fileTreeSelect = require('file-tree-select');
const path = require('path');

let dir = process.argv[2] || '.';
let absDir = path.resolve(dir);

fileTreeSelect(absDir, { hideFiles: true }).then(result => {
  console.log(`已选择[${result}]文件夹!`);
});

程式碼先使用path.resolve方法將使用者輸入的資料夾名字解析為絕對路徑。然後使用fileTreeSelect方法來展示目前目錄下的文件樹,使用者可以使用鍵盤操作來選擇資料夾。最後使用.then方法取得使用者選擇的資料夾路徑。

三、總結

選擇資料夾是Node.js中比較常見的操作。本文介紹了使用原生Node.js、inquirer和file-tree-select三種方式來實作選擇資料夾。對於小型專案來說,使用原生Node.js的方式可以滿足需求;對於大型項目,使用第三方模組可以提高開發效率和程式碼品質。

以上是nodejs實作選擇資料夾的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn