gpt4 book ai didi

node.js - 卡住了,完整性,用nodejs重复列出目录中的所有文件?

转载 作者:太空宇宙 更新时间:2023-11-04 00:20:47 26 4
gpt4 key购买 nike

我想用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.卡住
几分钟后在node控制台执行上述nodejs,光标停在那里,没有node promt字符>显示,只是一个静态光标。
静态光标是否意味着nodejs程序卡住了?

2.完整性
列出的所有文件在光标停在那里之前都没有留下,是真是假?

3.反复
附件中列出了许多相同的文件名,例如BasicLatin.jsCombDiacritMarks.js,相同的文件重复列出?

enter image description here

将语句 console.log('-' + file) 修复为 console.log(directoryName + path.sep + file) 并另存为 list.js并使用命令node list.js运行,问题2和问题3解决。
列出所有文件,并且没有重复的相同文件。

在终端输入node并逐行运行程序。
为什么在 Node 控制台中运行时列出所有文件后没有显示 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")

所以您的代码似乎并没有完全错误。

关于您的问题

  1. 您如何执行代码?
  2. 请在比/home 更小的目录层次结构上运行测试。我假设这是 unix/linux 机器上的/home。
  3. 同上。让我们以BasicLatin.js 为例。运行显示完整路径的程序并检查它们是否确实重复。

关于node.js - 卡住了,完整性,用nodejs重复列出目录中的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44641959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com