Java操作Ant压缩和解压文件及批量打包Anroid应用

2019-12-10 18:57:23王冬梅

AntZipActivity:

public class AntZipActivity extends Activity { 
  public static final String TYPE = "type"; 
  public static final int   TYPE_ZIP = -1; 
  public static final int   TYPE_TAR = 1; 
   
  public static final String SUFFIX_ZIP = ".zip"; 
  public static final String SUFFIX_TAR = ".tar"; 
  /** Called when the activity is first created. */ 
  private Button   btnDoCompress; 
  private Button   btnDecompress; 
   
  private RadioButton radioZip; 
  private RadioButton radioTar; 
   
  private boolean isZip = true; 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.antzip); 
    radioZip = (RadioButton)findViewById(R.id.radioZip); 
    isZip = true; 
    radioZip.setChecked(true); 
    radioZip.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
       
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        System.out.println("radioZip:"+isChecked); 
        if(isChecked) 
        { 
          isZip = true; 
        } 
      } 
    }); 
    radioTar = (RadioButton)findViewById(R.id.radioTar); 
    radioTar.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
       
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        System.out.println("radioTar:"+isChecked); 
        if(isChecked) 
        { 
          isZip = false; 
        } 
      } 
    }); 
    btnDoCompress = (Button)findViewById(R.id.button1); 
    btnDoCompress.setOnClickListener(new OnClickListener() { 
       
      @Override 
      public void onClick(View v) { 
        //进入压缩界面  
        Intent i = new Intent(AntZipActivity.this,DozipActivity.class); 
        i.putExtra(TYPE, isZip?TYPE_ZIP:TYPE_TAR); 
        AntZipActivity.this.startActivity(i); 
      } 
    }); 
    btnDecompress = (Button)findViewById(R.id.button2); 
    btnDecompress.setOnClickListener(new OnClickListener() { 
       
      @Override 
      public void onClick(View v) { 
        //进入解压界面  
        Intent i = new Intent(AntZipActivity.this,UnzipActivity.class); 
        i.putExtra(TYPE, isZip?TYPE_ZIP:TYPE_TAR); 
        AntZipActivity.this.startActivity(i); 
      } 
    }); 
  } 
} 

DozipActivity:

public class DozipActivity extends Activity implements OnClickListener{ 
  private EditText etPath; 
  private EditText etDest; 
  private Button btnDozip; 
  private TextView  tvTip; 
   
  private String srcPath; 
  private String zipDest; 
   
  private int   type; 
  private String suffix; 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setTitle("Ant-压缩"); 
    type = getIntent().getIntExtra(AntZipActivity.TYPE, AntZipActivity.TYPE_ZIP); 
    suffix = type==AntZipActivity.TYPE_ZIP ? AntZipActivity.SUFFIX_ZIP:AntZipActivity.SUFFIX_TAR; 
    setContentView(R.layout.dozip); 
    // 
    etPath = (EditText)findViewById(R.id.editText1); 
    etDest = (EditText)findViewById(R.id.editText2); 
    //设置一些默认的函数 
    etPath.setText("/sdcard/antzip"); 
    etDest.setText("/sdcard/antzip"+suffix); 
    btnDozip = (Button)findViewById(R.id.button); 
    tvTip  = (TextView)findViewById(R.id.tv_tip); 
    btnDozip.setOnClickListener(this); 
  } 
  @Override 
  public void onClick(View v) { 
    srcPath = etPath.getEditableText().toString(); 
    if(TextUtils.isEmpty(srcPath)) 
    { 
      Toast.makeText(this, "请指定一个路径", Toast.LENGTH_SHORT).show(); 
      return; 
    } 
    File srcFile = new File(srcPath); 
    if(!srcFile.exists()) 
    { 
      Toast.makeText(this, "指定的压缩包不存在", Toast.LENGTH_SHORT).show(); 
      return; 
    } 
    zipDest = etDest.getEditableText().toString(); 
    if(TextUtils.isEmpty(zipDest)) 
    { 
      //如果用户没有输入目标文件,则生成一个默认的 
      zipDest = srcFile.getParent(); 
    } 
    System.out.println("zip name:"+zipDest); 
    //如果是以/结尾的,则证明用户输入的是一个目录 ,需要在后面加上文件名 
    if(zipDest.endsWith(File.separator)) 
    { 
      zipDest+=srcFile.getName()+suffix; 
    } 
    else 
    { 
      //如果压缩文件名不是以zip/tar结尾,则加上后缀后 
      if(!zipDest.endsWith(suffix)) 
      { 
        zipDest +=suffix; 
      } 
    } 
    //如果用户选择的是zip,则用 zipUtil进行压缩 
    if(type == AntZipActivity.TYPE_ZIP) 
    { 
 
      ZipUtil zipp = new ZipUtil(); 
      zipp.doZip(srcPath, zipDest); 
    } 
    //如果用户选择的是tar,则用 tarUtil进行压缩 
    else 
    { 
      TarUtil tarr = new TarUtil(); 
      tarr.doTar(srcPath, zipDest); 
    } 
    //压缩完成后还是提示用户 
    tvTip.setText("压缩文件路径:"+zipDest); 
    Toast.makeText(this, "压缩完成", Toast.LENGTH_SHORT).show(); 
  } 
}