java项目中如何实现压缩文件与删除文件

  介绍

本篇文章给大家分享的是有关java项目中如何实现压缩文件与删除文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

压缩文件:toZip(字符串srcDir OutputStream,布尔KeepDirStructure)

删除文件:deleteFolder(文件夹)

/* *   *压缩成ZIP方法1   *   * @param srcDir   *压缩文件夹路径   * @param出来   *压缩文件输出流   * @param KeepDirStructure   *是否保留原来的目录结构,真的:保留目录结构;   *假:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败)   * @throws RuntimeException   *压缩失败会抛出运行时异常   */保护无效toZip (String srcDir, OutputStream   布尔KeepDirStructure)抛出RuntimeException {   长开始=System.currentTimeMillis ();   ZipOutputStream环球=零;   尝试{   环球=new ZipOutputStream(出);   文件的源文件=新文件(srcDir);   压缩(源文件、环球sourceFile.getName (), KeepDirStructure);   长债=System.currentTimeMillis ();   System.out.println(“压缩完成,耗时:“+(结束-开始)+“;ms");   }捕捉(异常e) {   把新的RuntimeException (“zip从ZipUtils"错误;,e);   最后}{   如果(环球!=null) {   尝试{   zos.close ();   }捕捉(IOException e) {   e.printStackTrace ();   }   }   }   }/* *   *递归压缩方法   *   * @param源文件   *源文件   * @param环球   *邮政输出流   * @param名字   *压缩后的名称   * @param KeepDirStructure   *是否保留原来的目录结构,真的:保留目录结构;   *假:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败)   * @throws例外   */私有静态孔隙压缩(文件的源文件,ZipOutputStream环球,   字符串名称,布尔KeepDirStructure)抛出异常{   byte [] buf=新字节(BUFFER_SIZE);   如果(sourceFile.isFile ()) {//向邮政输出流中添加一个zip实体,构造器中名称为zip实体的文件的名字   环球。putNextEntry(新ZipEntry(名称));//复制文件到zip输出流中   int len;   FileInputStream=新FileInputStream(源文件);   在((len=in.read (buf) !=1) {   环球。写(buf 0 len);   }//完成条目   zos.closeEntry ();   in.close ();   其他}{   文件[]listFiles=sourceFile.listFiles ();   如果(listFiles==null | | listFiles。长度==0){//需要保留原来的文件结构时,需要对空文件夹进行处理   如果(KeepDirStructure) {//空文件夹的处理   环球。putNextEntry(新ZipEntry(名字+“/?);//没有文件,不需要文件的副本   zos.closeEntry ();   }   其他}{   (文件文件:listFiles) {//判断是否需要保留原来的文件结构   如果(KeepDirStructure) {//注意:file.getName()前面需要带上父文件夹的名字加一斜杠,//不然最后压缩包中就不能保留原来的文件结构,即:所有文件都跑到压缩包根目录下了   压缩(文件、环球名称+“/?+ file.getName (),   KeepDirStructure);   其他}{   (压缩文件、环球file.getName (), KeepDirStructure);   }   }   }   }   }/* *   *删除文件夹   *   * @param文件夹   */保护无效deleteFolder(文件夹){//待删除文件路径   字符串路径=this.getClass () .getResource (“/? .getPath () .replace (   “web - inf/classes/?“postFile/?;   如果(folder.isDirectory ()) {   文件[]文件=folder.listFiles ();   for (int i=0;我& lt;files.length;我+ +){   [我]deleteFolder(文件);   }//非当前目录,删除   如果(! folder.getAbsolutePath () .equalsIgnoreCase(路径)){////只删除在7天前创建的文件//如果(canDeleteFile(文件夹)){//如果(folder.delete ()) {//system.out.println(“文件夹“;+ folder.getName() +“删除成功!“);//其他}{//system.out.println(“文件夹“;+ folder.getName ()//+“删除失败!此文件夹内的文件可能正在被使用“);//}//}//只要是空的文件夹就删除不区分几天前创建   如果(folder.delete ()) {   System.out.println(“文件夹“;+ folder.getName() +“删除成功!“);   其他}{   System.out.println(“文件夹“;+ folder.getName ()   +“删除失败!此文件夹内的文件可能正在被使用“);   }   }   其他}{   deleteFile(文件夹);   }   }/* *   *判断文件是否能够被删除   */保护布尔canDeleteFile(文件文件){   日期fileDate=getfileDate(文件);   日期日期=new日期();   长时间=(date.getTime ()——fileDate.getTime())/1000/60/60/24;//当前时间与文件创建时间的间隔天数//大于7天可删除,小于10天不删除   如果时间比;10){   返回true;   其他}{   返回错误;   }//返回true;   }/* *   *获取文件最后的修改时间   *   * @param文件   * @return   */保护日期getfileDate(文件文件){   长modifiedTime=file.lastModified ();   d=新日期(modifiedTime);   返回d;   }/* *   *删除文件   *   * @param文件   */保护无效deleteFile(文件文件){   尝试{   如果(file.isFile ()) {//删除符合条件的文件   如果(canDeleteFile(文件)){   如果(file.delete ()) {   System.out.println(“文件“;+ file.getName() +“删除成功!“);   其他}{   System.out.println(“文件“;+ file.getName ()   +“删除失败!此文件可能正在被使用“);   }   其他}{   }   其他}{   System.out.println(“没有可以删除的文件了“);   }   }捕捉(异常e) {   System.out.println(“删除文件失败========?;   e.printStackTrace ();   }   }

java项目中如何实现压缩文件与删除文件