1 package spoon.support.builder.support; 2 3 import java.io.BufferedInputStream ; 4 import java.io.ByteArrayOutputStream ; 5 import java.io.File ; 6 import java.io.FileInputStream ; 7 import java.io.FileNotFoundException ; 8 import java.io.IOException ; 9 import java.util.ArrayList ; 10 import java.util.List ; 11 import java.util.zip.ZipEntry ; 12 import java.util.zip.ZipInputStream ; 13 14 import spoon.support.builder.CtFile; 15 import spoon.support.builder.CtFolder; 16 import spoon.support.builder.FileFactory; 17 18 public class CtFolderZip implements CtFolder { 19 20 File f; 21 22 List <CtFile> files; 23 24 public CtFolderZip(File f) throws IOException { 25 super(); 26 if (!f.isFile()) { 27 throw new IOException (f.getName() + " is not a valid zip file"); 28 } 29 this.f = f; 30 } 31 32 public List <CtFile> getAllFile() { 33 return getFile(); 34 } 35 36 public List <CtFile> getAllJavaFile() { 37 List <CtFile> files = new ArrayList <CtFile>(); 38 39 for (CtFile f : getFile()) 40 if (f.isJava()) 41 files.add(f); 42 43 return files; 47 } 48 49 public List <CtFile> getFile() { 50 if (files == null) { 52 files = new ArrayList <CtFile>(); 53 try { 54 ZipInputStream zipInput = new ZipInputStream ( 55 new BufferedInputStream (new FileInputStream (f))); 56 57 ZipEntry entry; 58 while ((entry = zipInput.getNextEntry()) != null) { 59 final int BUFFER = 2048; 61 ByteArrayOutputStream output = new ByteArrayOutputStream ( 62 BUFFER); 63 int count; 64 byte data[] = new byte[BUFFER]; 65 while ((count = zipInput.read(data, 0, BUFFER)) != -1) { 66 output.write(data, 0, count); 67 } 68 output.flush(); 69 output.close(); 70 71 files.add(new CtFileZip(this, entry.getName(), output 72 .toByteArray())); 73 } 74 75 } catch (Exception e) { 76 e.printStackTrace(); 77 } 78 } 79 return files; 80 } 81 82 public String getName() { 83 return f.getName(); 84 } 85 86 public CtFolder getParent() { 87 try { 88 return FileFactory.createFolder(f.getParentFile()); 89 } catch (FileNotFoundException e) { 90 e.printStackTrace(); 91 } 92 return null; 93 } 94 95 public List <CtFolder> getSubFolder() { 96 return new ArrayList <CtFolder>(0); 97 } 98 99 public boolean isFile() { 100 return false; 101 } 102 103 @Override 104 public String toString() { 105 return getName(); 106 } 107 108 } 109 | Popular Tags |