介绍
本篇文章给大家分享的是有关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项目中如何实现压缩文件与删除文件