让我们假设我有一个有效的Java FileDescriptor
这是我在这样得到:有没有办法让文件大小只有FileDescriptor?
FileInputStream is = new FileInputStream("/some/path/to/file.txt");
FileDescriptor fd = is.getFD();
现在请忘记我知道文件的路径。我唯一拥有的是FileDescriptor
。有没有简单的方法知道文件的大小? 现在我已经检查了:
FileDescriptor
有valid()
方法,可以告诉我,如果它是有效的 但没有length()
或size()
功能。FileInputStream
不返回的路径和因为它是一个流它 显然不会告诉我的文件大小。File
(http://docs.oracle.com/javase/7/docs/api/java/io/File.html) 其中length()
方法没有能够处理的构造函数 FileDescriptor。
我知道我可以读取整个流并总结长度,但我不认为它是简单的方法。
您是否尝试过inputStream.available()? – Stefan
否因为API(http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#available%28%29)指出函数返回:字节数的估计值即可以从这个输入流中读取(或跳过)而不阻塞,或者当它到达输入流的末尾时读取(或跳过)。 – user1723095
@Stefan它会可靠吗?这是一个估计,只涵盖非阻塞。我想在一个文件上它可能是好的,但我不认为有任何保证。 –