卡住,完整性,重复列出目录中的所有文件与 nodejs?
stuck,completeness,repeatedly to list all files in directory with nodejs?
我想用nodejs列出指定目录下的所有文件。
var fs = require('fs');
var path = require('path');
var walk = function(directoryName) {
fs.readdir(directoryName, function(e, files) {
files.forEach(function(file) {
fs.stat(directoryName + path.sep + file, function(e, f) {
if (f.isDirectory()) {
walk(directoryName + path.sep + file)
} else {
console.log('-' + file)
}
})
})
})
}
walk("/home")
结果三道乱题。
1.stuck
在几分钟内在节点控制台中执行上述 nodejs,光标停在那里,没有节点提示字符 >
显示,只是一个静态光标。
静态游标是否意味着 nodejs 程序卡住了?
2.completeness
在光标停在那里之前列出的所有文件 none 是对还是错?
3.repeatedly
附件中列出了很多相同的文件名,如BasicLatin.js
和CombDiacritMarks.js
,重复列出相同的文件?
将语句 console.log('-' + file)
修改为 console.log(directoryName + path.sep + file)
并使用命令 node list.js
另存为 list.js 和 运行,问题 2 和问题 3 已解决。
列出所有文件,没有重复相同的文件。
在终端中输入node
,逐行输入运行程序。
为什么在节点控制台运行列出所有文件后没有节点提示字符>
?
好像程序卡在这里了?
Note: this isn't a complete answer yet. Need further information but
comments are too short. I will edit/delete my answer depending on your
response.
我 运行 你的代码在我的 Ubuntu 机器上,它以退出代码 0 完成。我必须处理回调中的错误以允许它 运行 完成但是它没有卡住。
'use strict';
var fs = require('fs');
var path = require('path');
var walk = function(directoryName) {
fs.readdir(directoryName, function(e, files) {
if (!e) {
files.forEach(function (file) {
fs.stat(directoryName + path.sep + file, function (e, f) {
if (!e) {
if (f.isDirectory()) {
walk(directoryName + path.sep + file)
} else {
console.log(' - ' + file)
}
} else {
console.log(e);
}
})
})
} else {
console.log(e);
}
})
}
walk("/home")
所以您的代码似乎没有完全不正确的地方。
关于您的问题
- 你是如何执行你的代码的?
- 请运行 在比 /home 更小的目录层次结构上进行测试。我假设这是 unix/linux 机器上的 /home。
- 同上。让我们以 BasicLatin.js 为例。 运行 显示完整路径的程序并检查它们是否真的重复。
我想用nodejs列出指定目录下的所有文件。
var fs = require('fs');
var path = require('path');
var walk = function(directoryName) {
fs.readdir(directoryName, function(e, files) {
files.forEach(function(file) {
fs.stat(directoryName + path.sep + file, function(e, f) {
if (f.isDirectory()) {
walk(directoryName + path.sep + file)
} else {
console.log('-' + file)
}
})
})
})
}
walk("/home")
结果三道乱题。
1.stuck
在几分钟内在节点控制台中执行上述 nodejs,光标停在那里,没有节点提示字符 >
显示,只是一个静态光标。
静态游标是否意味着 nodejs 程序卡住了?
2.completeness
在光标停在那里之前列出的所有文件 none 是对还是错?
3.repeatedly
附件中列出了很多相同的文件名,如BasicLatin.js
和CombDiacritMarks.js
,重复列出相同的文件?
将语句 console.log('-' + file)
修改为 console.log(directoryName + path.sep + file)
并使用命令 node list.js
另存为 list.js 和 运行,问题 2 和问题 3 已解决。
列出所有文件,没有重复相同的文件。
在终端中输入node
,逐行输入运行程序。
为什么在节点控制台运行列出所有文件后没有节点提示字符>
?
好像程序卡在这里了?
Note: this isn't a complete answer yet. Need further information but comments are too short. I will edit/delete my answer depending on your response.
我 运行 你的代码在我的 Ubuntu 机器上,它以退出代码 0 完成。我必须处理回调中的错误以允许它 运行 完成但是它没有卡住。
'use strict';
var fs = require('fs');
var path = require('path');
var walk = function(directoryName) {
fs.readdir(directoryName, function(e, files) {
if (!e) {
files.forEach(function (file) {
fs.stat(directoryName + path.sep + file, function (e, f) {
if (!e) {
if (f.isDirectory()) {
walk(directoryName + path.sep + file)
} else {
console.log(' - ' + file)
}
} else {
console.log(e);
}
})
})
} else {
console.log(e);
}
})
}
walk("/home")
所以您的代码似乎没有完全不正确的地方。
关于您的问题
- 你是如何执行你的代码的?
- 请运行 在比 /home 更小的目录层次结构上进行测试。我假设这是 unix/linux 机器上的 /home。
- 同上。让我们以 BasicLatin.js 为例。 运行 显示完整路径的程序并检查它们是否真的重复。