在Java中重新创建目录结构并从zip文件的字节数组中提取文件
我有一个zip文件的字节数组,我需要从中创建zip文件,然后解压缩其中的文件和文件夹 我尝试这样做,但得到的zip条目为空在Java中重新创建目录结构并从zip文件的字节数组中提取文件,java,file,zip,Java,File,Zip,我有一个zip文件的字节数组,我需要从中创建zip文件,然后解压缩其中的文件和文件夹 我尝试这样做,但得到的zip条目为空 { ResponseEntity<byte[]> result = restTemplate.exchange(builder.build().toString(), HttpMethod.GET, httpEntity, byte[].class); ZipInputStream zipStream = new ZipInputStream(new B
{
ResponseEntity<byte[]> result = restTemplate.exchange(builder.build().toString(), HttpMethod.GET, httpEntity, byte[].class);
ZipInputStream zipStream = new ZipInputStream(new ByteArrayInputStream(result.getBody()))
ZipEntry entry = null;
while ((entry = zipStream.getNextEntry()) != null)
}
{
ResponseEntity result=restemplate.exchange(builder.build().toString(),HttpMethod.GET,httpEntity,byte[].class);
ZipInputStream zipStream=新的ZipInputStream(新的ByteArrayInputStream(result.getBody()))
ZipEntry条目=null;
while((entry=zipStream.getnextery())!=null)
}
Zip文件类似于
- 目录->b.txt
- DIR->x.php,a.txt
提前感谢好的,我成功地以编程方式下载了上述链接的文件:
List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
acceptableMediaTypes.add(MediaType.APPLICATION_OCTET_STREAM);
HttpHeaders headers = new HttpHeaders();
headers.setAccept(acceptableMediaTypes);
RestTemplate restTemplate = new RestTemplate();
HttpEntity<String> httpEntity = new HttpEntity<String>(headers);
ResponseEntity<byte[]> result = restTemplate.exchange( "someurl deleted On purpose",
HttpMethod.GET,
httpEntity,
byte[].class );
ZipInputStream zipStream = new ZipInputStream(new ByteArrayInputStream(result.getBody()));
ZipEntry entry = null;
while ((entry = zipStream.getNextEntry()) != null)
{
System.out.println( "entry: " + entry );
}
因此,您可能无法请求正确的媒体类型,或者URL编码不正确。如何获取这些字节?此外,还应包括尝试获取ZipEntry的代码。{ResponseEntity result=restTemplate.exchange(builder.build().toString(),HttpMethod.GET,httpEntity,byte[].class);ZipInputStream zipStream=new ZipInputStream(new ByteArrayInputStream(result.getBody()))ZipEntry条目=null;而((entry=zipStream.getnextery())!=null)}通过rest templateIf result.getBody()获取这些字节返回表示正确zip内容的字节数组,然后您的代码也将正确提取zip条目。您的问题似乎是接收到的字节数组不正确。因此,您的问题归结为有关通过REST框架接收正确字节数组的问题。是的,这是一个有效的zip文件。请下载它手动并将其直接馈送到ZipInputStream会产生有效的结果。您的问题是如何以编程方式获取此文件的内容。由于您没有提供有关所用REST客户端框架的任何信息,我无法提供更多帮助。是spring吗?谢谢@Heri我想我没有使用MediaTypes,那么请为我的回答,或者选择正确的,我已经投了赞成票,但是没有足够的分数。因此,反对票不可见
entry: bridge2cart/
entry: bridge2cart/config.php
entry: bridge2cart/bridge.php
entry: readme.txt