1
TtiGeR 2017-06-25 00:07:53 +08:00 via iPhone
|
2
misaka19000 2017-06-25 02:02:49 +08:00 via Android
用 c 写过 native 方法然后 Java 调呗
|
3
SoloCompany 2017-06-25 02:10:41 +08:00
想听一下楼主的高见,j2se 的 file.length 方法存在什么效率问题?以及有什么可以越过 jni 访问系统调用的方法?
|
4
xupefei 2017-06-25 02:26:34 +08:00
|
5
gogohigh 2017-06-25 02:29:48 +08:00 2
unix 系统下的 HotSpot 实现有四种方式获取文件大小,
File 的 length 是通用方法,底层直接调用 stat。 FileChannel 的 size 使用 stat 或 ioctl。 FileInputStream 的 channel size 和 URL 的 available 也能一次性获得 Integer.MAX_VALUE 字节以下文件的大小,底层也是 stat。 底层调用都一样,当然直接调用的最快了。 另外,多次读取时操作系统会使用缓存,要是想跑 benchmark,注意每次跑前清缓存。 |