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开发的一些路径做了相应的处理. 下面就是 ...
随机推荐
- Tomcat运行流程
Connector介绍 1.1 Connector的种类 Tomcat源码中与connector相关的类位于org.apache.coyote包中,Connector分为以下几类: Http Conn ...
- Hibernate使用Log4j日志记录(使用properties文件)
我们知道,Log4j和Logback框架可用于支持日志记录hibernate,使用log4j有两种执行日志记录的方法: 通过log4j.xml文件(或) 通过log4j.properties文件 在这 ...
- redis的下载
网址一:https://github.com/dmajkic/redis/downloads 网址二:http://windows.php.net/downloads/pecl/releases/re ...
- 高通音频 媒体喇叭增益隐藏参数(一个QACT无法修改的参数)
源文件位置:modem_proc\multimedia\audio\avs\src\sndhwg2.c sndhw_init()函数,2520行左右:pm_set_speaker_gain(PM_SP ...
- 非常实用的JavaScript小技巧
使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是否有一个有效值,如果存在就返回true值.为了做这样的验证,我们可以使用!!操作符来实现是非常的方便与简单.对于变量可以使用 ...
- requirejs 第一个实例
介绍:requirejs 是实现了模块化加载和按需加载的js库,防止了全局变量的污染. 1.安装 require : 在require 中文网下载 http://www.requirejs.cn/,然 ...
- 不通过AppStore,在iOS设备上直接安装应用程序的原理
本文转载至 http://mobile.51cto.com/hot-439095.htm 通过itms-services协议,可以通过safari浏览器直接在iOS设备上安装应用程序.利用这种方式, ...
- 1052 最大M子段和(DP)
1052 最大M子段和 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 N个整数组成的序列a[1],a[2],a[3],…,a[n],将这N个数划分为互不相交的M个 ...
- F - 简单计算器(栈)
F - 简单计算器 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descripti ...
- StartCom免费ssl证书申请以及在Tomcat环境中的配置
提示:建议以下操作不使用谷歌浏览器(该网站的证书不识别...),可以看到我的截图中谷歌换成了ie(没装火狐)...建议该申请使用火狐 前面介绍了下自签名的ssl证书,虽然可以实现https协议访问,但 ...