java-FileInputStream读取直到文件的最后128个字节
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-FileInputStream读取直到文件的最后128个字节,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1299字,纯文字阅读大概需要2分钟。
内容图文
我正在尝试从文件(签名)读取最后128个字节,然后尝试读取直到这些字节,但是第一部分(读取最后128个字节)返回ArrayIndexOutOfBoundsException:
byte[] signature = new byte[128];
FileInputStream sigFis = new FileInputStream(f);
sigFis.read(signature, (int)f.length()-128, 128);
sigFis.close();
然后最后一部分似乎也不起作用,我使用的是逐渐增加的偏移量:
CipherInputStream cis = new CipherInputStream(fis, c);
FileOutputStream fos = new FileOutputStream(destFile);
int i = cis.read(data);
int offset = 0, maxsize = (int)f.length()-128;
while((i != -1) && offset<maxsize){
fos.write(data, 0, i);
sig.update(data);
fos.flush();
i = cis.read(data);
offset+=1024;
}
我使用以前做过的皇家空军获得了EOFExcpetion …
byte[] signature = new byte[128];
int offset = (int)f.length()-128;
raf.seek(offset);
raf.readFully(signature, 0, 128);
解决方法:
我将使用File或FileChannel来获取文件大小.这是读取直到最后128个字节的方法
FileInputStream is = new FileInputStream("1.txt");
FileChannel ch = is.getChannel();
long len = ch.size() - 128;
BufferedInputStream bis = new BufferedInputStream(is);
for(long i = 0; i < len; i++) {
int b = bis.read();
...
}
如果我们继续阅读,我们将获得最后的128个字节
ByteArrayOutputStream bout128 = new ByteArrayOutputStream();
for(int b; (b=bis.read() != -1);) {
bout128.write(b);
}
byte[] last128 = bout128.toByteArray();
内容总结
以上是互联网集市为您收集整理的java-FileInputStream读取直到文件的最后128个字节全部内容,希望文章能够帮你解决java-FileInputStream读取直到文件的最后128个字节所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。