【发布时间】:2015-11-11 11:00:17
【问题描述】:
假设我有一个有效的 Java 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()方法的构造函数没有能够处理的构造函数 文件描述符。
我知道我可以读取整个流并对长度求和,但我不认为它是简单的方法。
【问题讨论】:
-
你试过 inputStream.available() 吗?
-
否,因为 API (docs.oracle.com/javase/7/docs/api/java/io/…) 声明函数返回:估计可以从该输入流中读取(或跳过)的字节数而不会阻塞或到达末尾时为 0输入流。
-
@Stefan 可靠吗?这是一个估计值,仅涵盖非阻塞。我猜在文件上可能没问题,但我认为没有任何保证。
标签: java file file-descriptor