用java解压.rar文件(Using java to extract .rar files)

2019-06-26 12:35发布

我要寻找一个方法来解压.rar使用Java何地我搜索我一直结束了同一个工具的文件- JavaUnRar 。 我一直在寻找到解压.rar与此文件,但我似乎途径找到要做到这一点是非常漫长而尴尬就像在这个例子中

我目前能够提取.tar.tar.gz.zip.jar在20行代码的文件或更少所以要有提取一个简单的方法.rar文件,没有任何人知道?

只是如果它可以帮助任何人,这是我使用提取两个密码.zip.jar文件,它同时适用于

 public void getZipFiles(String zipFile, String destFolder) throws IOException {
    BufferedOutputStream dest = null;
    ZipInputStream zis = new ZipInputStream(
                                       new BufferedInputStream(
                                             new FileInputStream(zipFile)));
    ZipEntry entry;
    while (( entry = zis.getNextEntry() ) != null) {
        System.out.println( "Extracting: " + entry.getName() );
        int count;
        byte data[] = new byte[BUFFER];

        if (entry.isDirectory()) {
            new File( destFolder + "/" + entry.getName() ).mkdirs();
            continue;
        } else {
            int di = entry.getName().lastIndexOf( '/' );
            if (di != -1) {
                new File( destFolder + "/" + entry.getName()
                                             .substring( 0, di ) ).mkdirs();
            }
        }
        FileOutputStream fos = new FileOutputStream( destFolder + "/"
                                                     + entry.getName() );
        dest = new BufferedOutputStream( fos );
        while (( count = zis.read( data ) ) != -1) 
            dest.write( data, 0, count );
        dest.flush();
        dest.close();
    }
}

Answer 1:

您可以提取.gz.zip.jar因为他们使用的内置的Java SDK的压缩算法号文件。

RAR格式的情况下是一个有点不同。 RAR是一个专有的压缩文件格式。 RAR许可证不允许把它列入到软件开发工具,如Java SDK。

的unrar文件的最佳方式将是使用第三方库,如junrar 。

您可以在SO问题其他Java RAR库的一些引用的RAR压缩文件与Java 。 还这么问如何使用Java程序的文本文件压缩成RAR格式详细解释了不同的解决方法(例如,使用Runtime )。



Answer 2:

您可以使用库junrar

<dependency>
   <groupId>com.github.junrar</groupId>
   <artifactId>junrar</artifactId>
   <version>0.7</version>
</dependency>

代码示例:

            File f = new File(filename);
            Archive archive = new Archive(f);
            archive.getMainHeader().print();
            FileHeader fh = archive.nextFileHeader();
            while(fh!=null){        
                    File fileEntry = new File(fh.getFileNameString().trim());
                    System.out.println(fileEntry.getAbsolutePath());
                    FileOutputStream os = new FileOutputStream(fileEntry);
                    archive.extractFile(fh, os);
                    os.close();
                    fh=archive.nextFileHeader();
            }


Answer 3:

你可以简单地添加这个行家依赖于你的代码:

<dependency>
    <groupId>com.github.junrar</groupId>
    <artifactId>junrar</artifactId>
    <version>0.7</version>
</dependency>

然后使用提取的RAR文件的代码:

        File rar = new File("path_to_rar_file.rar");
    File tmpDir = File.createTempFile("bip.",".unrar");
    if(!(tmpDir.delete())){
        throw new IOException("Could not delete temp file: " + tmpDir.getAbsolutePath());
    }
    if(!(tmpDir.mkdir())){
        throw new IOException("Could not create temp directory: " + tmpDir.getAbsolutePath());
    }
    System.out.println("tmpDir="+tmpDir.getAbsolutePath());
    ExtractArchive extractArchive = new ExtractArchive();
    extractArchive.extractArchive(rar, tmpDir);
    System.out.println("finished.");


文章来源: Using java to extract .rar files
标签: java extract rar