Java的dir.listFiles()和* .nix的ls之间有什么区别?

时间:2014-09-21 16:03:37

标签: java linux bash unix

我编写了一些使用dir.listFiles().length;获取目录中文件数的java代码。命令ls -l | wc给了我一个不同的数字。我相信这两个命令都会跳过隐藏的目录。可能是造成不同数字的原因是什么?

2 个答案:

答案 0 :(得分:2)

ls -l | wc 

计算ls -l输出的行数,在具有单个文件的目录中,它仍然会输出2行,这并不意味着它在该目录中有2个文件

答案 1 :(得分:0)

来自man wc

 wc - print newline, word, and byte counts for each file. 

当命令ls -l | wc给出类似3 7 15的输出时,wc表示输入中有3个换行符,7个单词和15个字符(字节)({{1}的输出})。 3个换行符意味着有3个文件,因为ls -l列出了每个带换行符的文件。

另一方面,Java中的ls -ldir.listFiles().length方法返回的File数组的长度,实际上是dir.listFiles()中的文件数。

如果您想要dir的类似结果,请传递wc或仅-lines选项,该选项仅打印换行计数:

-l

最重要的是ls -l | wc -l 会在dir.listFiles()中列出所有{strong>隐藏文件,其中dir 不会&# 39;默认情况下列出。要与Java的结果保持一致,请使用:

ls