Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.io.File.length()为目录返回什么?_Java_File_File Io - Fatal编程技术网

java.io.File.length()为目录返回什么?

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(

javadoc for java.io.File.length()声明:

返回此抽象路径名表示的文件长度。如果此路径名表示目录,则返回值未指定

我一直在Solaris上进行测试,它似乎基于目录中的文件数,但它返回的文件数总是大于包含“.”文件的文件\文件夹数

有人知道这个值在Solaris\Linux\OSX\Windows上的含义吗?它可能是特定于操作系统的,但最好知道它是否有任何价值

编辑:

我同意那些建议这不是“一次编写,在任何地方运行”Java方法的特性的评论,但是由于返回的值不是0L(可能在某些操作系统上,但在Solaris上不是),我想知道该值指的是什么


本机Java调用通常是直接的单操作系统过程,因此无论值引用什么都有一定的意义,您都可以免费获得它,而无需加载更多的Java.io.File。

File.length主要用于确定文件的大小。决不能用它来确定目录中的文件数。JavaDocs状态未定义的事实应该已经触发了警告


如果您不想知道目录中的文件数,您应该改用(或它的替代方案)

这取决于操作系统,但我希望它返回磁盘上使用的空间。顺便说一句:目录是一种特殊类型的文件,其中包含目录中的名称和节点。如果您是UNIX上的root用户,您可以像读取文件一样读取目录的字节。抽象类java.io.FileSystem(这是File.length()调用的)的JavaDoc表示,它被定义为零目录。它实际上是用本机代码实现的,我不知道该怎么看。无论如何,如果它不是零,则本机代码违反java.io.Filesystem规范。它返回实际知道该数字的含义的开发人员数量=P。无论如何,该数字是不应该依赖的,因为javadocs说它是未指定的。答案如下:“如果此路径名表示目录,则返回值未指定”