【问题标题】:Why does readdirSync sort the results automatically?为什么 readdirSync 会自动对结果进行排序?
【发布时间】:2019-07-07 22:01:11
【问题描述】:

我使用方法fs.readdirSync(path) 检索数组中的文件名。为什么结果数组中的文件名是排序的?

function checkFile() {
    try {
        let imgsFolder = './images/';
        let imgs = fs.readdirSync(imgsFolder);

        fs.statSync(imgsFolder);
        return imgs;
    }

    catch (e) {
        console.log("Folder does not exist.");
        fs.mkdirSync("images/");
        console.log("Folder was created.");
    }
}

checkFile();

例如该文件夹有以下文件:tts.jpg, array.jpg, man.jpg,但我将它们检索为array.jpg, man.jpg, tts.jpg

【问题讨论】:

  • 你使用的文件系统很有可能是按字母顺序索引的。
  • 我在文件夹中添加了一个排序,它可能不起作用?
  • 如果您在文件夹中按添加排序,那么问题不在于 fs.readdirSync(),而在于您的排序代码。你能给我们看看吗?
  • 代码中没有排序,奇怪
  • Node JS 不知道您打算对列表做什么,因此出于性能原因不对其进行排序。如果它碰巧被排序,那么文件系统要么在进行排序,要么以碰巧排序的方式存储它们。

标签: javascript node.js file-io


【解决方案1】:

好吧,如果您阅读readdirSync方法引用的readdir信息,就会出现以下评论

连续调用读取文件名的顺序 readdir() 取决于文件系统的实现;不太可能 名称将以任何方式排序。

【讨论】:

  • 谢谢!下次我会更用心的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-18
  • 2013-01-07
  • 2020-01-27
  • 1970-01-01
  • 2016-10-11
相关资源
最近更新 更多