簡體   English   中英

使用 nio 文件系統從 zip 文件中提取文件

[英]extract file from zip file using nio filesystem

這是我的 function 從現有的 zip 中提取文件(路徑)。 問題是 FIC 是 null,因為由於提供者不同,因此不支持該操作。(基於文檔)

我正在使用 jdk 8。

public File method(){
 URI uri = new File(zipFilePath).toURI();//URI.create("jar:file:"+zipFilePath);
        Map<String, String> env = new HashMap<>();
        env.put("create", "true");
        File fic = null;
        FileSystem zipfs = null;
        try {
            zipfs = FileSystems.newFileSystem(URI.create("jar:"+uri),env);

            for(Path path : zipfs.getRootDirectories()){
                System.out.println(path);

                /*Files.walk(path).forEach(p -> {
                           if(p.getFileName()!=null && p.getFileName().toString().contains(fileToExtract)){
                               System.out.println(p.getFileName());
                           }
                        }
                );*/

               Path pathFound = Files.walk(path).filter(p -> p.getFileName()!=null &&  p.getFileName().toString().contains(fileToExtract)).findAny().orElse(null);

                if(pathFound!=null){
                    fic = pathFound.toFile();
                    break;
                }
            }

        }
        catch(Exception e){
            log.error(e.getMessage());
        }finally{
            // close the file system
           FileIOUtil.closeNioFileSystem(zipfs);
        }

        return fic;
}

看看這個鏈接。 該技術是使用輸出流而不是轉換為文件。

https://www.journaldev.com/17794/java-files-nio-files-class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM