微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > Java平台 > J2SE >

java读取文件问题

时间:2014-04-10 09:47  浏览:努力统计中...
我用java需要读取一个PLY文件,该文件有个ascii文件头,之后的内容部分可以是ascii文件格式,或者binary_little_endian格式,或者binary_big_endian格式。我用RandomAccessFile类来实现读取文件功能,
我用java需要读取一个 PLY 文件,该文件有个ascii文件头,之后的内容部分可以是ascii文件格式,或者binary_little_endian格式,或者binary_big_endian格式。我用 RandomAccessFile 类来实现读取文件功能,这个类具有读取字节功能,还能用readLine() 方法来按行读取,这样读取ascii格式数据也方便。但是RandomAccessFile 类按行读取效率很低,原因是反复读取IO数据,而读取二进制文件却很快,因为之前我使用了ByteBuffer来存储了需要读取的二进制数据,这样不用反复读取IO了。

请问有没有解决RandomAccessFile 这个按行读取效率低的办法呢,比如用其他类来实现,我尝试使用 BufferedReader来实现,但是BufferedReader 貌似不能读取二进制格式文件。

楼主如果是windows平台的,可通过JNI调用C++的CreateFile()读取字节流,速度可达10Mps



谢谢!我后来解决了这个问题,但不是调用c++的。原来用randomaccessfil读取后面的ascii内容将近10万个点的数据再加上处理时间需要16秒,改进后是3秒多。用的仍然是bufferedreader,和randomaccessfile同时读头文件,然后根据ascii内容和binary内容相应的关闭不用的文件对象就行了,虽然方法笨点但是对于我够啦。
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线------