【发布时间】:2017-02-13 05:46:03
【问题描述】:
我正在 Node.js 中创建一个接收用户输入的 cmd 程序,其中一个输入是文件夹。
现在我想让用户更轻松地选择文件夹(例如使用“cd”等命令时文件的 cmd 自动补全),而不是实际键入整个路径。
有没有这样做的最佳实践?
提前致谢!
【问题讨论】:
我正在 Node.js 中创建一个接收用户输入的 cmd 程序,其中一个输入是文件夹。
现在我想让用户更轻松地选择文件夹(例如使用“cd”等命令时文件的 cmd 自动补全),而不是实际键入整个路径。
有没有这样做的最佳实践?
提前致谢!
【问题讨论】:
【讨论】:
好的,所以看了jiyinyiyong的回答后,我得到了我想要的。
基本上就是这样:
var readline = require('readline');
var fs = require('fs');
function completer(line) {
var currAddedDir = (line.indexOf('/') != - 1) ? line.substring(0, line.lastIndexOf('/') + 1) : '';
var currAddingDir = line.substr(line.lastIndexOf('/') + 1);
var path = __dirname + '/' + currAddedDir;
var completions = fs.readdirSync(path);
var hits = completions.filter(function(c) { return c.indexOf(currAddingDir) === 0});
var strike = [];
if (hits.length === 1) strike.push(currAddedPath + hits[0] + '/');
return (strike.length) ? [strike, line] : [hits.length ? hits : completions, line];
}
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
completer: completer
});
rl.question('whatever', function(answer) {
// Do what ever
});
【讨论】: