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.
- 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.
- 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!

The article discusses useEffect in React, a hook for managing side effects like data fetching and DOM manipulation in functional components. It explains usage, common side effects, and cleanup to prevent issues like memory leaks.

Lazy loading delays loading of content until needed, improving web performance and user experience by reducing initial load times and server load.

Higher-order functions in JavaScript enhance code conciseness, reusability, modularity, and performance through abstraction, common patterns, and optimization techniques.

The article discusses currying in JavaScript, a technique transforming multi-argument functions into single-argument function sequences. It explores currying's implementation, benefits like partial application, and practical uses, enhancing code read

The article explains React's reconciliation algorithm, which efficiently updates the DOM by comparing Virtual DOM trees. It discusses performance benefits, optimization techniques, and impacts on user experience.Character count: 159

Article discusses preventing default behavior in event handlers using preventDefault() method, its benefits like enhanced user experience, and potential issues like accessibility concerns.

The article explains useContext in React, which simplifies state management by avoiding prop drilling. It discusses benefits like centralized state and performance improvements through reduced re-renders.

The article discusses the advantages and disadvantages of controlled and uncontrolled components in React, focusing on aspects like predictability, performance, and use cases. It advises on factors to consider when choosing between them.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Zend Studio 13.0.1
Powerful PHP integrated development environment

Atom editor mac version download
The most popular open source editor

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Dreamweaver Mac version
Visual web development tools
