java FileUtils 文件工具类
package com.sicdt.library.core.utils; import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.CRC32;
import java.util.zip.CheckedOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* <br>类 名: FileUtils
* <br>描 述: 描述类完成的主要功能
* <br>作 者: shizhenwei
* <br>创 建: 2017年5月15日
* <br>版 本: v0.0.2
* <br>
* <br>历 史: (版本) 作者 时间 注释
*/
public class FileUtils { private Logger log = LoggerFactory.getLogger(FileUtils.class); private File file; public FileUtils(File file) {
this.file = file;
} public FileUtils(String pathname) {
this(new File(pathname));
} public static FileUtils create(String pathname) {
return new FileUtils(pathname);
} public static FileUtils create(File file) {
return new FileUtils(file);
} /**
* 获取不带扩展名的文件名
* @return
*/
public String getNameWithOutSuffix() {
String name = file.getName();
if(!file.isFile()) return name;
int flag = name.lastIndexOf(".");
if(flag != -1){
return name.substring(0, flag);
}
return name;
} /**
* 获取文件扩展名
* @return
*/
public String getSuffix(){
if(!file.isFile()) return "";
String name = file.getName();
int flag = name.lastIndexOf(".");
if(flag != -1){
return name.substring(flag + 1).toLowerCase();
}
return "";
} /**
* 获取当前文件所在文件夹路径
* @return
*/
public String getFolderPath() {
File parent = file.getParentFile();
if(parent == null || !parent.exists()){
return File.separator;
}
return parent.getAbsolutePath();
} /**
* 将文件复制到
* @param pathname 文件夹名称
* @return
*/
public File copyTo(String pathname) {
File targetFile = new File(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 = new FileInputStream(file);
OutputStream output = new FileOutputStream(targetFile);){
IOUtils.copy(input, output);
log.info("Copy file to: " + pathname);
}catch(IOException e){
e.printStackTrace();
return null;
}
}
return targetFile;
} public boolean exist() {
return file.exists();
} /**
* 压缩至文件夹
* @param foldername
* @return
*/
public File zipTo(String foldername, String zipname) {
if(StringUtils.isEmpty(zipname)){
zipname = getNameWithOutSuffix() + ".zip";
}
File targetFolder = new File(foldername);
if(!targetFolder.exists() || !targetFolder.isDirectory()){
targetFolder.mkdirs();
}
File targetFile = new File(targetFolder.getAbsolutePath() + File.separator + zipname);
try(FileOutputStream output = new FileOutputStream(targetFile);
CheckedOutputStream cos = new CheckedOutputStream(output, new CRC32());
ZipOutputStream zipout = new ZipOutputStream(cos);){
compress(file, zipout, "");
return targetFile;
}catch(Exception e){
log.error("文件压缩失败:" + targetFile.getAbsolutePath());
return null;
}
} private void compress(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(new FileInputStream(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 void delete(){
delete(file);
} private boolean delete(File file) {
if (file.isDirectory()) {
String[] children = file.list();
for (int i=0; i<children.length; i++) {
boolean success = delete(new File(file, children[i]));
if (!success) {
return false;
}
}
}
return file.delete();
} /**
* 获取文件MD5
* @return
*/
public String md5() {
return MD5Utils.getFileMD5String(file);
}
}
java FileUtils 文件工具类的更多相关文章
- java下载文件工具类
java下载文件工具类 package com.skjd.util; import java.io.BufferedInputStream; import java.io.BufferedOutput ...
- FileUtils 文件工具类
FileUtils 下载jar中的文件 package com.meeno.chemical.common.utils; import lombok.extern.slf4j.Slf4j; impor ...
- Java常用工具类---IP工具类、File文件工具类
package com.jarvis.base.util; import java.io.IOException;import java.io.InputStreamReader;import jav ...
- java文件工具类
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- 自动扫描FTP文件工具类 ScanFtp.java
package com.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja ...
- 读取Config文件工具类 PropertiesConfig.java
package com.util; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io ...
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- Java 实现删除文件工具类
工具代码 package com.wangbo; import java.io.File; /** * 删除目录或文件工具类 * @author wangbo * @date 2017-04-11 1 ...
- Android FileUtil(android文件工具类)
android开发和Java开发差不了多少,也会有许多相同的功能.像本文提到的文件存储,在Java项目和android项目里面用到都是相同的.只是android开发的一些路径做了相应的处理. 下面就是 ...
随机推荐
- 【原创】菜鸟版Android 笔记1- Android架构和Application
Android架构 图1 Android架构自上而下名称为应用层.应用框架层.运行库和Adroid虚拟机层. Linux内核层. 1. 应用层 应用层像一座大厦里面的砖瓦.我们所做的开发基本上都在应用 ...
- Sphinx 安装与使用(2)-- 配置Coreseek
1.必须先关闭守护进程才能做其他的操作(第一次启动不需要这一步) /usr/local/coreseek/bin/searchd --config /usr/local/coreseek/etc/te ...
- 我的第五个java程序 每过10秒读取一次天气 并把天气更新到mysql数据库里
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; ...
- ASCII码表(0-255)
- python3----函数(join)
今天写python 100例时,有个题目是大致是这样的:已知输入形式是1+3+2+1,要求输出形式为1+1+2+3 一开始思路是将输入的字符串用split()函数划分成数组,在对数组进行排序,再用fo ...
- L - Points on Cycle(旋转公式)
L - Points on Cycle Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- 导出网页中的table到excel
导出网页中的table到excel的两种简便方法: 1. 纯 JavaScript 方法,缺点只支持IE浏览器 var elTable = document.getElementById(" ...
- inner join和out join的区别
inner join(又叫join) out join包括left join,right join和full join(也就是left+right)
- CAS单点登录------302个没完没了
我的配置如上 背景:Shiro + Cas 进行的单点登录配置! 其实这个问题很扯淡!看代码! 我本在shiro里面配置的Sucessurl !嘿嘿!我哭了!屌用没有! 我一脸懵逼大写的WHY??? ...
- 打日志--以python为例
日志报错要去修,要不然是隐患,总有一天会爆炸 增加日志是排错的好方法,不要不舍得加日志,比如怕代码变难看,怕日志输出太多. python logging exc_info sys.exc_info() ...