2017-09-14 7 views
0

.java 개의 파일을 모두 파일의 ArrayList 개에 넣고 싶습니다. ZipInputStream을 가져온 다음 ZipEntry을 사용하여 파일을 반복하지만 ZipEntry에서 파일을 가져 오는 방법을 이해할 수 없습니다.".jip"파일에서 모든 .java 파일을 읽는 방법

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; 
} 
+0

어떻게 돌아온'List '을 사용 하시겠습니까? 그 목적은 무엇입니까? – Pshemo

+0

이 방법을 확인하십시오 [link] (https://stackoverflow.com/a/36890475/1012497) – nikli

+0

자바 코드의 모든 주석과 식별자를 확인하여 코드 냄새를 검사하고 싶습니다. 그래서이 클래스의 모든 자바 파일을 가져오고 싶습니다. 그런 다음 해당 파일을 사용하여 작업하십시오 (예 : 코드 냄새를 검사하기 위해 주석과 식별자를 얻으십시오). @Pshemo –

답변

0

어쩌면 당신은 바로 아래와 같은 파일을 사용할 수 있습니다

File javaFile = new File(zipEntry.getName()); 
javaFiles.add(javaFile); 
+0

하지만이 파일에는 zip 파일에있는 파일의 원본 내용이 없습니다. –

0

이 코드 여기

ZipFile zipFile = new ZipFile("C:/test.zip"); 

Enumeration<? extends ZipEntry> entries = zipFile.entries(); 

while(entries.hasMoreElements()){ 
    ZipEntry entry = entries.nextElement(); 
    InputStream stream = zipFile.getInputStream(entry); 
} 
1

확인하시기 바랍니다 읽고 우편에있는 .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)); 
      } 
     } 
    } 
} 
+0

감사합니다. 이것은 많은 도움이됩니다. –

+0

하지만 ZipFile 대신 MultipartFile을 사용하고 있기 때문에 (파일이 실제로 zip 파일 임에도 불구하고) 문자열을 가져 오는 방법을 알려주실 수 있습니까? –

+0

이 링크를 참조하십시오 https://stackoverflow.com/questions/24339990/how-to-convert-a-multipart-file-to-file –

0

나중에 트래버스 할 파일 목록이 필요하면 먼저 어딘가에서 파일을 추출해야합니다. 다른 답변에는 입력 스트림을 가져와 디스크에 쓰는 방법에 대한 예제가 있으므로 반복하지는 않겠습니다.

파일을 추출한 다음 목록을 참조로 채울 수 있습니다.

p.s. 나는 당신이 프로젝트 나 다른 것을 위해 이것을하고 있다고 생각하지만, Sonarqube와 같은 일반적인 툴은 정적 코드 분석에서 우수합니다.