CNode

fs.readdirSync()问题

问答
Jjch1229发布于9 年前最后回复9 年前6 回复5882 浏览0 收藏

在网上查了一些这方面的资料,全是一个版本,特别火大,然后真的想不通,就来发帖求助。 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)

L
linliny#1·9 年前

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

D
dislido#2·9 年前
['1','2','10','20'].sort();
// ["1", "10", "2", "20"]

没毛病

S
sodawy#3·9 年前

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

没毛病

J
jch1229#6·9 年前
引用 dislido没毛病

@dislido 的确是这样的,谢谢

参与回复
登录后即可参与回复。登录