Home  >  Article  >  Web Front-end  >  nodejs implements selecting folder

nodejs implements selecting folder

WBOY
WBOYOriginal
2023-05-28 13:47:561371browse

Node.js is a popular back-end JavaScript programming language that is widely used to build web applications, APIs, command line tools, etc. In Node.js, sometimes you need to let users select folders to read, write, and modify in the program. This article will introduce how to use Node.js to select a folder.

1. Use native Node.js to implement folder selection

Node.js provides the fs module to operate the file system. In the fs module, there is a method called readdir, which can read all files and subdirectories in a directory. The following is a code example that uses native Node.js to select a folder:

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}不是一个有效的文件夹!`);
      }
    });
  });
});

The code first uses the fs.readdir method to read the user-specified folder, and then uses the fs.stat method to determine whether each file is Not a folder. Finally, process.stdin is used to obtain the user's input. If the user input is a folder, it means that the user selected the folder.

2. Use third-party modules to select folders

In addition to using native Node.js, you can also use third-party modules to select folders. Here are two common third-party modules for selecting folders.

  1. inquirer

inquirer is a powerful interactive command line user interface library that can create interactive selections on the command line just like developing web forms. The following is a code example that uses inquirer to select a folder:

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}]文件夹!`);
  });

This code uses the fs.readdirSync method to read all folders in the current directory, and uses the filter method to filter out all folders. Then each folder is encapsulated into an object through the map method, so that the folder name can be displayed in the inquirer's selection list. Finally, use the inquirer.prompt method to pop up a selection list to let the user select a folder, and use answer.dir to get the name of the folder selected by the user.

  1. file-tree-select

file-tree-select is a file selector plugin built on inquirer and node-file-tree. It can display the file tree in the current directory on the command line, and users can select folders through the up and down arrows and space bar of the keyboard. The following is a code example that uses file-tree-select to select a folder:

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}]文件夹!`);
});

This code first uses the path.resolve method to resolve the folder name entered by the user into an absolute path. Then use the fileTreeSelect method to display the file tree in the current directory, and the user can use keyboard operations to select the folder. Finally, use the .then method to get the folder path selected by the user.

3. Summary

Selecting a folder is a common operation in Node.js. This article introduces three ways to select folders using native Node.js, inquirer and file-tree-select. For small projects, using native Node.js can meet the needs; for large projects, using third-party modules can improve development efficiency and code quality.

The above is the detailed content of nodejs implements selecting folder. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:nodejs what is data proxyNext article:nodejs what is data proxy