java.io.File.length()为目录返回什么?
javadoc for java.io.File.length()声明: 返回此抽象路径名表示的文件长度。如果此路径名表示目录,则返回值未指定 我一直在Solaris上进行测试,它似乎基于目录中的文件数,但它返回的文件数总是大于包含“.”文件的文件\文件夹数 有人知道这个值在Solaris\Linux\OSX\Windows上的含义吗?它可能是特定于操作系统的,但最好知道它是否有任何价值 编辑: 我同意那些建议这不是“一次编写,在任何地方运行”Java方法的特性的评论,但是由于返回的值不是0L(可能在某些操作系统上,但在Solaris上不是),我想知道该值指的是什么java.io.File.length()为目录返回什么?,java,file,file-io,Java,File,File Io,javadoc for java.io.File.length()声明: 返回此抽象路径名表示的文件长度。如果此路径名表示目录,则返回值未指定 我一直在Solaris上进行测试,它似乎基于目录中的文件数,但它返回的文件数总是大于包含“.”文件的文件\文件夹数 有人知道这个值在Solaris\Linux\OSX\Windows上的含义吗?它可能是特定于操作系统的,但最好知道它是否有任何价值 编辑: 我同意那些建议这不是“一次编写,在任何地方运行”Java方法的特性的评论,但是由于返回的值不是0L(
本机Java调用通常是直接的单操作系统过程,因此无论值引用什么都有一定的意义,您都可以免费获得它,而无需加载更多的Java.io.File。File.length主要用于确定文件的大小。决不能用它来确定目录中的文件数。JavaDocs状态未定义的事实应该已经触发了警告
如果您不想知道目录中的文件数,您应该改用(或它的替代方案)这取决于操作系统,但我希望它返回磁盘上使用的空间。顺便说一句:目录是一种特殊类型的文件,其中包含目录中的名称和节点。如果您是UNIX上的root用户,您可以像读取文件一样读取目录的字节。抽象类java.io.FileSystem(这是File.length()调用的)的JavaDoc表示,它被定义为零目录。它实际上是用本机代码实现的,我不知道该怎么看。无论如何,如果它不是零,则本机代码违反java.io.Filesystem规范。它返回实际知道该数字的含义的开发人员数量=P。无论如何,该数字是不应该依赖的,因为javadocs说它是未指定的。答案如下:“如果此路径名表示目录,则返回值未指定”