在用7-zip创建的java中打开zip的问题

时间:2016-03-02 14:47:57

标签: java zip 7zip

我尝试使用以下java代码打开一个zip文件:

private Task<List<RestCanvas>> fetchCanvases = new MyTask(getCanvasForGroupAccount + groupAccount.getGroupId());

// ...

// please don't use this name :)
private static class MyTask extends Task<List<RestCanvas>> {
    private final String id;

    public MyTask(String id) {
        this.id = id;
    }

    @Override
    protected List<RestCanvas> call() throws Exception {
        List<RestCanvas> list = new ArrayList<>();
        try{
            for(RestGroupAccount groupAccount : groupAccounts) {
                RestTemplate rest = StaticRestTemplate.getRest();
                HttpHeaders requestHeaders = new HttpHeaders();
                requestHeaders.add("Cookie", "JSESSIONID=" + StaticRestTemplate.jsessionid);
                HttpEntity<RestCanvas> requestEntity = new HttpEntity<>(requestHeaders);
                rest.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
                rest.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
                ResponseEntity<RestCanvas[]> responseEntity = rest.exchange(id, HttpMethod.GET, requestEntity, RestCanvas[].class);
                RestCanvas[] restCanvasArray = responseEntity.getBody();
                Collections.addAll(list, restCanvasArray);
            }
        }catch (Exception e){
            e.printStackTrace();
        }


        return list;
    }
}

给了我

    ZipFile zipFile = new ZipFile("C:\\test.zip");
    Enumeration<? extends ZipEntry> entries = zipFile.entries();
    while (entries.hasMoreElements()) {
        ZipEntry entry = entries.nextElement();
        System.out.println(entry.getName());
    }
    zipFile.close();

当读取包含使用7-zip创建的德语“Umlaute”(ä,ü,ö...)文件的zip文件时。由于Exception in thread "main" java.lang.IllegalArgumentException: MALFORMED at java.util.zip.ZipCoder.toString(ZipCoder.java:58) at java.util.zip.ZipFile.getZipEntry(ZipFile.java:531) at java.util.zip.ZipFile.access$900(ZipFile.java:56) at java.util.zip.ZipFile$1.nextElement(ZipFile.java:513) at java.util.zip.ZipFile$1.nextElement(ZipFile.java:483) 使用的默认编码是UTF-8。

因此,我试图在GUI中压缩文件时找出7-zip(Windows 7,64位)使用的编码。显然它不是UTF-8 ..

0 个答案:

没有答案