解压所在目录下所有zip包 ,对解压的文件编辑内容 ,将编辑完的文件存放至目标目录下_02

时间:2021-12-21 12:46:16
package demo0325;


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;


import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;


//解压所在目录下所有zip包 ,对解压的文件编辑内容 ,将编辑完的文件存放至目标目录下
public class addScript {


//在工程目录demo0325生成所有用户可执行的脚本
//zipFileDir="D:\\Android\\jars"
//projectDir="D:\\Android\\workspace\\MqcDemo\\src\\demo0325\\";
//packageContent="package demo0325;"
public static void main(String zipFileDir,String projectDir,String packageContent) throws IOException {
// TODO Auto-generated method stub
UnAllZip(zipFileDir,projectDir,packageContent);
}

//解压所在目录下所有zip包 ,对解压的文件编辑内容 ,将编辑完的文件存放至目标目录下
public static void UnAllZip(String zipFileDir,String projectDir,String packageContent) throws IOException{
File fileFolder=new File(zipFileDir);
String[] fileNames=fileFolder.list();
for(int i=0;i<fileNames.length;i++){
//截取当前文件夹最后四个字符内容
String fileType=fileNames[i].substring(fileNames[i].length()-4);
if(fileType.equals(".zip"))
{
//用户脚本
String scriptName=fileNames[i].substring(0,fileNames[i].length()-4)+".java";
String userJavaScript=zipFileDir+"\\"+scriptName;
//解压当前zip文件
UnZip(zipFileDir+"\\", fileNames[i].toString());
//生成对应目标脚本
CreateProjectScript(scriptName, userJavaScript, packageContent, projectDir);
}
}
}

//解压一个.zip文件到相同目录下 zipFileDir=D:\\Android\\jars\\  zipFileName=Main.zip
  public static void UnZip(String zipFileDir,String zipFileName) throws IOException{
  File file = new File(zipFileDir+zipFileName);
  ZipFile zipFile = null;
  try {
  zipFile = new ZipFile(file,"GBK");//设置编码格式
  } catch (IOException exception) {
  exception.printStackTrace();
  System.out.println("解压文件不存在!");
  }
  Enumeration e = zipFile.getEntries(); 
  while(e.hasMoreElements()) { 
  ZipEntry zipEntry =(ZipEntry)e.nextElement();
  if(zipEntry.isDirectory()){
  String name=zipEntry.getName();
  name=name.substring(0,name.length()-1);
  File f=new File(zipFileDir+name);
  f.mkdirs();
  }else {
  File f = new File(zipFileDir+zipEntry.getName());
  f.getParentFile().mkdirs();
  f.createNewFile();
  InputStream is=zipFile.getInputStream(zipEntry);
  FileOutputStream fos=new FileOutputStream(f);
  int length=0;
  byte[] b=new byte[1024];
  while((length=is.read(b,0,1024))!=-1){
  fos.write(b, 0, length);
  }
  is.close();
  fos.close();
  }
  }
  if(zipFile != null){
  zipFile.close();
  }
  //file.deleteOnExit();
  //System.out.println("解压完"+zipFileName+"包");
  }


  //生成对应目标脚本
  public static void CreateProjectScript (String scriptName, String userJavaScript,String packageContent,String projectDir) throws IOException
  {
List<String> listArr=new ArrayList<String>();
     listArr.add(packageContent);
     listArr.add("\r\n");
     BufferedReader javaFileBR=null;
  try{
  javaFileBR=new BufferedReader(new InputStreamReader(new FileInputStream(userJavaScript),"GBK"));
     String str1="";
     while ((str1=javaFileBR.readLine())!=null) {
  listArr.add(str1);
  }
  }catch(Exception e){
  System.out.println("获取文本出错");
  }finally {
  javaFileBR.close();
  }
  //for(int i=0;i<listArr.size();i++){
  // System.out.println(listArr.get(i).toString());
  //}
 
  File changeFile = new File(projectDir);
  if(!changeFile.exists()){
  changeFile.mkdirs();
 
  // fileName表示你创建的文件名;为.java类型;
  File file = new File(changeFile,scriptName);
  if(!file.exists()){
  try {
  file.createNewFile();
  } catch (IOException e) {
  e.printStackTrace();
  }
  }
  try {  
             FileOutputStream out = new FileOutputStream(projectDir+scriptName);  
             OutputStreamWriter outWriter = new OutputStreamWriter(out, "UTF-8");  
             BufferedWriter bufWrite = new BufferedWriter(outWriter);  
             for (int j=0;j<listArr.size();j++) {  
                 bufWrite.write(listArr.get(j)+"\r\n");  
             }  
             bufWrite.close();  
             outWriter.close();  
             out.close();  
         } catch (Exception e) {  
             e.printStackTrace();  
             System.out.println("读取" + projectDir+scriptName + "出错!");  
     }finally{
      //System.out.println(scriptName+"脚本已添加package行");
     }
  }
}