不用递归,怎样获取文件夹的大小?

很容易想到获取文件夹大小的方式是递归获取文件夹下的所有文件,然后把这些文件的大小加起来。
但这种方式有两大问题:
1.如果要查询的文件夹较多,效率比较低;
2.文件大小之和其实比父文件夹的大小要小一些。

我们知道windows中可以直接右键查看文件夹的大小,我想知道它是怎样知道文件夹大小的?
编程时能通过什么方式来获取这个文件夹的大小?

阅读 6.4k
5 个回答

windows也是递归的吧,如果文件夹复杂,右键的的时候,文件夹的大小是慢慢增加的,不是一下子显示的


PHP可以使用filesize函数计算每个文件大小,之后累加文件大小,得到文件夹结果

递归实际上是深度优先搜索嘛。

直接用广度优先搜索就好了啊。

遍历目录基本没办法不递归吧,递归可以改,用栈去实现,减少频繁的函数调用开销

javascript@linux:~/test/a$ ls -a
.  ..  a.log  a.txt
javascript@linux:~/test/a$ du -ah
4.0K    ./a.log
4.0K    ./a.txt
12K    .
javascript@linux:~/test/a$ 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题