加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 好设计:如何将InputStreams作为参数传递?

发布时间:2020-12-14 05:47:10 所属栏目:Java 来源:网络整理
导读:我有一个大文件,我正在打开一个FileInputStream.此文件包含一些文件,每个文件都有一个从开头和大小的偏移量.此外,我有一个解析器,应该评估这样一个包含的文件. File file = ...; // the big filelong offset = 1734; // a contained file's offsetlong size
我有一个大文件,我正在打开一个FileInputStream.此文件包含一些文件,每个文件都有一个从开头和大小的偏移量.此外,我有一个解析器,应该评估这样一个包含的文件.
File file = ...; // the big file
long offset = 1734; // a contained file's offset
long size = 256; // a contained file's size
FileInputStream fis = new FileInputStream(file );
fis.skip(offset);
parse(fis,size);

public void parse(InputStream is,long size) {
   // parse stream data and insure we don't read more than size bytes
   is.close();
}

我觉得这不是好习惯.有没有更好的方法来做到这一点,也许使用缓冲?

此外,我觉得skip()方法会大大减慢阅读过程.

解决方法

听起来你真正想要的是一种“部分”输入流 – 有点像ZipInputStream,你在流中有一个流.

您可以自己编写,将所有InputStream方法代理到原始输入流,对偏移量进行适当调整,并检查读取子文件末尾的内容.

那是你在谈论的那种事吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读