fs.readdirSync()问题
发布于 6 年前 作者 jch1229 5019 次浏览 来自 问答

在网上查了一些这方面的资料,全是一个版本,特别火大,然后真的想不通,就来发帖求助。 fs.readdirSync()是同步的读取一个目录中的所有文件,可是我读取uploads里面的一个相册文件夹,总共有20张,每次我一调用这个方法,先读取1.jpg,然后是10.jpg,当读到20.jpg后再返回到2.jpg开始读取,然后再读取到9.jpg。请问这是什么原因?实在没想通,fs.readdirSync()是同步的方法,我的理解是他应该按照顺序依次读取才对,这种情况的发生我感觉这个方法都成异步的了!(不知道我的理解对不对) let pathname =path.join(’./’,‘uploads’); let ddir; try{ ddir = fs.readdirSync(pathname+"/"+Albuname);//这里的问题是读取顺序不对,为什么读取过后就直接就跳转到十了? }catch (err){ } return ddir;

6 回复

1,10,2这个顺序是没问题的,你windows用dir看也是这个顺序,只是你桌面显示不是这个顺序而已

['1','2','10','20'].sort();
// ["1", "10", "2", "20"]

没毛病

你可以理解成默认的排序是比较文件名的字符大小,从左到右、从小到大: 先比较文件名的charCodeAt(0),相同的话再比较charCodeAt(1)12.0

没毛病

@linliny 谢谢谢谢

@dislido 的确是这样的,谢谢

回到顶部