folderutils.java_java FileUtils 文件工具类

packagecom.sicdt.library.core.utils;importjava.io.BufferedInputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.zip.CRC32;importjava.util.zip.CheckedOutputStream;importjava.util.zip.ZipEntry;importjava.util.zip.ZipOutputStream;importorg.apache.commons.io.IOUtils;importorg.apache.commons.lang3.StringUtils;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;/***

*
类 名: FileUtils

*
描 述: 描述类完成的主要功能

*
作 者: shizhenwei

*
创 建: 2017年5月15日

*
版 本: v0.0.2

*

*
历 史: (版本) 作者 时间 注释*/

public classFileUtils {private Logger log = LoggerFactory.getLogger(FileUtils.class);privateFile file;publicFileUtils(File file) {this.file =file;

}publicFileUtils(String pathname) {this(newFile(pathname));

}public staticFileUtils create(String pathname) {return newFileUtils(pathname);

}public staticFileUtils create(File file) {return newFileUtils(file);

}/*** 获取不带扩展名的文件名

*@return

*/

publicString getNameWithOutSuffix() {

String name=file.getName();if(!file.isFile()) returnname;int flag = name.lastIndexOf(".");if(flag != -1){return name.substring(0, flag);

}returnname;

}/*** 获取文件扩展名

*@return

*/

publicString getSuffix(){if(!file.isFile()) return "";

String name=file.getName();int flag = name.lastIndexOf(".");if(flag != -1){return name.substring(flag + 1).toLowerCase();

}return "";

}/*** 获取当前文件所在文件夹路径

*@return

*/

publicString getFolderPath() {

File parent=file.getParentFile();if(parent == null || !parent.exists()){returnFile.separator;

}returnparent.getAbsolutePath();

}/*** 将文件复制到

*@parampathname 文件夹名称

*@return

*/

publicFile copyTo(String pathname) {

File targetFile= newFile(pathname);if(file.isDirectory()){if(!targetFile.exists() || !targetFile.isDirectory()){

targetFile.mkdirs();

}

log.info("Copy folder to: " +pathname);

File[] childFiles=file.listFiles();if(childFiles != null && childFiles.length > 0){for(File childFile: childFiles){

String targetpath= targetFile.getAbsolutePath() + File.separator +childFile.getName();

FileUtils childUtils=FileUtils.create(childFile);

childUtils.copyTo(targetpath);

}

}

}else{try(InputStream input = newFileInputStream(file);

OutputStream output= newFileOutputStream(targetFile);){

IOUtils.copy(input, output);

log.info("Copy file to: " +pathname);

}catch(IOException e){

e.printStackTrace();return null;

}

}returntargetFile;

}public booleanexist() {returnfile.exists();

}/*** 压缩至文件夹

*@paramfoldername

*@return

*/

publicFile zipTo(String foldername, String zipname) {if(StringUtils.isEmpty(zipname)){

zipname= getNameWithOutSuffix() + ".zip";

}

File targetFolder= newFile(foldername);if(!targetFolder.exists() || !targetFolder.isDirectory()){

targetFolder.mkdirs();

}

File targetFile= new File(targetFolder.getAbsolutePath() + File.separator +zipname);try(FileOutputStream output = newFileOutputStream(targetFile);

CheckedOutputStream cos= new CheckedOutputStream(output, newCRC32());

ZipOutputStream zipout= newZipOutputStream(cos);){

compress(file, zipout,"");returntargetFile;

}catch(Exception e){

log.error("文件压缩失败:" +targetFile.getAbsolutePath());return null;

}

}private voidcompress(File zipfile, ZipOutputStream out, String basedir) {if(zipfile.isDirectory()){

File[] files=zipfile.listFiles();for(File childFile: files){

compress(childFile, out, basedir+ zipfile.getName() + "/");

}

}else{try(BufferedInputStream bis = new BufferedInputStream(newFileInputStream(zipfile));){

ZipEntry entry= new ZipEntry(basedir +zipfile.getName());

out.putNextEntry(entry);

IOUtils.copy(bis, out);

}catch(Exception e){

log.error("压缩失败:" + zipfile.getAbsolutePath() + ": " +e.getMessage(), e);

}

}

}public voiddelete(){

delete(file);

}private booleandelete(File file) {if(file.isDirectory()) {

String[] children=file.list();for (int i=0; i

}

}

}returnfile.delete();

}/*** 获取文件MD5

*@return

*/

publicString md5() {returnMD5Utils.getFileMD5String(file);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值