如何使用java在zip中获取特殊文件offest
我使用java中的如何使用java在zip中获取特殊文件offest,java,android,python,zip,Java,Android,Python,Zip,我使用java中的ZipEntry和ZipInputStream和ZipFile来获取zip存档的一些信息。但我还是不能得到一个信息 Python可以这样做: otazip = zipfile.ZipFile(sys.argv[1], 'r') load_info = otazip.getinfo('load.bin') load_offset = load_info.header_offset + len(load_info.FileHeader()) 有谁能像python那样使用java帮
ZipEntry
和ZipInputStream
和ZipFile
来获取zip存档的一些信息。但我还是不能得到一个信息
Python可以这样做:
otazip = zipfile.ZipFile(sys.argv[1], 'r')
load_info = otazip.getinfo('load.bin')
load_offset = load_info.header_offset + len(load_info.FileHeader())
有谁能像python那样使用java帮助我获取加载偏移量吗?在java中,没有从ZipEntry获取偏移量的方法 我尝试了以下解决方案,效果很好:
public long getZipEntryOffset() {
String path = ota.zip;
final String loadString = "load.bin";
long offset = 0;
File zipFile = new File(path);
ZipInputStream zis = new ZipInputStream(new FileInputStream(path));
try {
ZipEntry loadEntry = zisp.getNextEntry();
while( loadEntry != null){
long fileSize = 0;
long extra = loadEntry.getExtra() == null ? 0 : loadEntry.getExtra().length;
String fileName = loadEntry.getName();
Offset += 30 + loadEntry.getName().length() + extra;
if(!loadEntry.isDirectory()){
fileSize = loadEntry.getCompressedSize();
}
if (fileName.equals(loadString )) {
loadSize = loadEntry.getSize();
break;
}
offset += fileSize;
loadEntry = zisp.getNextEntry();
}
zisp.closeEntry();
}finally {
zis.close();
}
return offset ;
}
偏移量由30字节的标准zip头信息+文件名长度+一些可能的额外操作系统特定标志+数据本身组成。在Java中,没有从ZipEntry获取偏移量的方法 我尝试了以下解决方案,效果很好:
public long getZipEntryOffset() {
String path = ota.zip;
final String loadString = "load.bin";
long offset = 0;
File zipFile = new File(path);
ZipInputStream zis = new ZipInputStream(new FileInputStream(path));
try {
ZipEntry loadEntry = zisp.getNextEntry();
while( loadEntry != null){
long fileSize = 0;
long extra = loadEntry.getExtra() == null ? 0 : loadEntry.getExtra().length;
String fileName = loadEntry.getName();
Offset += 30 + loadEntry.getName().length() + extra;
if(!loadEntry.isDirectory()){
fileSize = loadEntry.getCompressedSize();
}
if (fileName.equals(loadString )) {
loadSize = loadEntry.getSize();
break;
}
offset += fileSize;
loadEntry = zisp.getNextEntry();
}
zisp.closeEntry();
}finally {
zis.close();
}
return offset ;
}
偏移量由30字节的标准zip头信息+文件名长度+一些可能的额外操作系统特定标志+数据本身组成IMHO,这就是您所需要的。我想获得load.bin有效负载在zip-archtive中的位置。该链接似乎是关于在zip-archtive中读取文件的?我从该链接中找到了一个解决方案:该链接也帮助了我:IMHO,这就是您需要的。我想获取zip-archive中load.bin有效负载的位置。该链接似乎是关于在zip-archive中读取文件的?我从该链接中找到了一个解决方案:该链接也帮助了我: