如何从“.zip”文件中读取所有“.java”文件

Sha*_*bir 3 java zipfile

我想获取所有.java文件并将它们放在一个ArrayList文件中。我已经用 aZipInputStream然后 aZipEntry来遍历文件,但无法理解如何从ZipEntry.

public List<File> getJavaFiles(MultipartFile file){
    List<File> javaFiles = new ArrayList<File>();

    ZipEntry zipEntry;

    log.info("getJavaFiles");
    try {
        ZipInputStream zip;
        try {
            zip = new ZipInputStream( file.getInputStream());
            while((zipEntry = zip.getNextEntry()) != null){
                if(zipEntry.getName().endsWith(".java")){
                    log.info(zipEntry.getName());

                    //How do I put the java file in my array list
                }
            }
            zip.close();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }


    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    return javaFiles;
}
Run Code Online (Sandbox Code Playgroud)

Abh*_*ney 5

这是可以读取和打印 zip 文件中的 .java 文件的代码:

您还可以使用此代码获取文件及其内容。

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

import org.apache.commons.io.IOUtils;

public class test {
    public static void main(String[] args) throws IOException {
        ZipFile zipFile = new ZipFile("test.zip");
        Enumeration<? extends ZipEntry> entries = zipFile.entries();
        System.out.println(entries);

        while(entries.hasMoreElements()){
            ZipEntry entry = entries.nextElement();
            System.out.println(entry.getName());
            if(entry.getName().contains("java")){
                InputStream stream = zipFile.getInputStream(entry);
                System.out.println(IOUtils.toString(stream, StandardCharsets.UTF_8));
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)