读取zip内文件的内容问题

zip内有一个文件,文件内部的数据有两部分,中间以\r\n隔开,现在的目的是以固定长度读取第二部分。目前做法:首先获取文件的流,然后一次性读出所有数据的字节,再转换成字符串,再以\r\n分割字符串得到第二部分的数据,请问,接下来如何以固定长度读取第二部分的数据。ps:第二部分数据是不可见字符。
...全文
143 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 ml_dark 的回复:
就看你文件大小和\r\n存在的形式了,\r\n默认换行符,用bufferedreader可以搞定,如果是以纯二进制形式,暴力方法就是字节搜索。 这种需求一般是在设计的时候,在生成文件的时候再文件头部标记各个部分数据的起始偏移量和数据长度,可以兼容超大文件的读取
感谢大佬,我通过System.arrayCopy的方式强行获取到了,我直接找到\r\n表示的byte在字节数组中的位置,然后进行拆分,虽然太过取巧,但是只要文件的头部数据长度是固定的,就没关系。当然我的方法肯定不是正常的方式,目前先做出来,后面进行优化。再次感谢大佬.
ml_dark 2019-10-21
  • 打赏
  • 举报
回复
就看你文件大小和\r\n存在的形式了,\r\n默认换行符,用bufferedreader可以搞定,如果是以纯二进制形式,暴力方法就是字节搜索。 这种需求一般是在设计的时候,在生成文件的时候再文件头部标记各个部分数据的起始偏移量和数据长度,可以兼容超大文件的读取
  • 打赏
  • 举报
回复
引用 1 楼 ml_dark 的回复:
这个跟ZIP没关系。首先你的做法有问题,全部读出来容易内存GG,固定长度读取都是采用inputstream.read(byte[]),想读多少了就设定字节数组的大小。如果能确认数据量小,可以采用System.arrayCopy方法
inputstream.read(byte[])我知道,但是怎么保证从第二部分开始读呢。
ml_dark 2019-10-21
  • 打赏
  • 举报
回复
这个跟ZIP没关系。首先你的做法有问题,全部读出来容易内存GG,固定长度读取都是采用inputstream.read(byte[]),想读多少了就设定字节数组的大小。如果能确认数据量小,可以采用System.arrayCopy方法

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧