java - 如何在java中获取.exe文件的最后 'n'字节?

标签 java exe self-extracting

我需要在java中自解压.exe文件中获取最后22个字节作为中心目录的末尾(没有命令行,请没有终端解决方案)。我尝试使用 bufferInputStream 读取 .exe 文件的内容并获得成功,但是当尝试使用

获取最后 22 个字节时
BufferInputStream.read(byteArray, 8170, 22);

java 引发异常,表示它已关闭流。在这方面的任何帮助将不胜感激。谢谢。

最佳答案

我还没有尝试过这个,但我想你可以使用 MappedByteBuffer 来读取最后 22 个字节。

File file = new File("/path/to/my/file.bin");

long size = file.length();
FileChannel channel = FileChannel.open(file.toPath(), StandardOpenOption.READ);
MappedByteBuffer buffer = channel.map(MapMode.READ_ONLY, size-22, 22);

然后只需将缓冲区刷新到数组中即可。

byte[] payload = new byte[22];
buffer.get(payload);

关于java - 如何在java中获取.exe文件的最后 'n'字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33916100/

相关文章:

exe - 制作包含图片等文件的exe文件

java - Java Applet 内某些像素位置的颜色?

java - 如何从 jar 正确构建 native 可执行文件?

Java 应用程序未完成

installation - 如何使用 WinRAR 制作自安装可执行文件?

file - 如何设置自解压 zip 文件的文件版本和产品版本属性?

java - Java中的getter/setter

java - liferay钩子(Hook)部署-事件类未找到异常

java - 如何使用键盘箭头键将行标题 JTable 滚动与另一个表同步

exe - 如何在开发人员机器上构建 Visual Studio 2017 .NET Core .exe 文件?