文章目录

  • 删除文件:
  • 创建目录
  • 拷贝文件
  • 解压zip文件

解压文件时,可以采用多线程的方式,下面上代码:
创建类

@Slf4j
public class FileOperation {private static Executor executor = Executors.newFixedThreadPool(20);//创建新文件的方法:public static File newFile(String fileUrl) {File file = new File(fileUrl);return file;}

删除文件:

 public static boolean deleteFile(File file) {if (file == null) {return false;}if (!file.exists()) {return false;}if (file.isFile()) {return file.delete();} else {for (File newfile : file.listFiles()) {deleteFile(newfile);}}return file.delete();}/*** 删除文件** @param fileUrl 文件路径* @return 删除是否成功*/public static boolean deleteFile(String fileUrl) {File file = newFile(fileUrl);return deleteFile(file);}//参数为路径时为需要删除的文件路径public static boolean deleteFile(String fileUrl) {File file = newFile(fileUrl);return deleteFile(file);}

创建目录

public static boolean mkdir(File file) {if (file == null) {return false;}if (file.exists()) {return true;}return file.mkdirs();}/*** 创建目录** @param fileUrl 文件路径* @return 是否创建成功*/public static boolean mkdir(String fileUrl) {if (fileUrl == null) {return false;}File file = newFile(fileUrl);if (file.exists()) {return true;}return file.mkdirs();}

拷贝文件

/*** 拷贝文件** @param fileInputStream  文件输入流* @param fileOutputStream 文件输出流* @throws IOException io异常*/public static void copyFile(FileInputStream fileInputStream, FileOutputStream fileOutputStream) throws IOException {try {byte[] buf = new byte[4096];  //8k的缓冲区int len = fileInputStream.read(buf); //数据在buf中,len代表向buf中放了多少个字节的数据,-1代表读不到while (len != -1) {fileOutputStream.write(buf, 0, len); //读多少个字节,写多少个字节len = fileInputStream.read(buf);}} finally {if (fileInputStream != null) {try {fileInputStream.close();} catch (IOException e) {e.printStackTrace();}}if (fileOutputStream != null) {try {fileOutputStream.close();} catch (IOException e) {e.printStackTrace();}}}}/*** 拷贝文件** @param src  源文件* @param dest 目的文件* @throws IOException io异常*/public static void copyFile(File src, File dest) throws IOException {FileInputStream in = new FileInputStream(src);FileOutputStream out = new FileOutputStream(dest);copyFile(in, out);}/*** 拷贝文件** @param srcUrl  源路径* @param destUrl 目的路径* @throws IOException io异常*/public static void copyFile(String srcUrl, String destUrl) throws IOException {if (srcUrl == null || destUrl == null) {return;}File srcFile = newFile(srcUrl);File descFile = newFile(destUrl);copyFile(srcFile, descFile);}

解压zip文件

/*** 文件解压缩** @param sourceFile        需要解压的文件* @param destDirPath 目的路径* @return 解压目录列表*/public static List<String> unzip(File sourceFile, String destDirPath) {ZipFile zipFile = null;Set<String> set = new HashSet<String>();// set.add("/");List<String> fileEntryNameList = new ArrayList<>();try {zipFile = new ZipFile(sourceFile, Charset.forName("GBK"));Enumeration<? extends ZipEntry> entries = zipFile.entries();while (entries.hasMoreElements()) {ZipEntry entry = (ZipEntry) entries.nextElement();String[] nameStrArr = entry.getName().split("/");String nameStr = "/";for (int i = 0; i < nameStrArr.length; i++) {if (!"".equals(nameStrArr[i])) {nameStr = nameStr + "/" + nameStrArr[i];set.add(nameStr);}}log.info("解压" + entry.getName());String zipPath = "/" + entry.getName();fileEntryNameList.add(zipPath);//如果是文件夹,就创建个文件夹if (entry.isDirectory()) {String dirPath = destDirPath + File.separator + entry.getName();File dir = FileOperation.newFile(dirPath);dir.mkdir();} else {//如果是文件,就先创建一个文件,然后用io流把内容拷过去File targetFile = new File(destDirPath + "/" + entry.getName());// 保证这个文件的父文件夹必须要存在if (!targetFile.getParentFile().exists()) {targetFile.getParentFile().mkdirs();}targetFile.createNewFile();// 将压缩文件内容写入到这个文件中InputStream is = null;FileOutputStream fos = null;try {is = zipFile.getInputStream(entry);fos = new FileOutputStream(targetFile);int len;byte[] buf = new byte[2048];while ((len = is.read(buf)) != -1) {fos.write(buf, 0, len);}} catch (Exception e) {// 关流顺序,先打开的后关闭if (fos != null) {try {fos.close();} catch (Exception e1) {log.error("关闭流失败:" + e1);}}if (is != null) {try {is.close();} catch (Exception e2) {log.error("关闭流失败:" + e2);}}}}}} catch (Exception e) {throw new RuntimeException("unzip error from ZipUtils", e);} finally {if (zipFile != null) {try {zipFile.close();} catch (IOException e) {e.printStackTrace();}}}for (String zipPath : fileEntryNameList) {executor.execute(new Runnable() {@Overridepublic void run() {if (FileUtil.isImageFile(FileUtil.getFileExtendName(zipPath))) {File file = new File(destDirPath + zipPath);File minFile = new File(destDirPath + FileUtil.getFileNameNotExtend(zipPath) + "_min." + FileUtil.getFileExtendName(zipPath));try {ImageOperation.thumbnailsImage(file, minFile, 300);} catch (IOException e) {e.printStackTrace();}}}});}List<String> res = new ArrayList<>(set);return res;}

其中ImageOperation.thumbnailsImage(file, minFile, 300);方法如下:

import net.coobird.thumbnailator.Thumbnails;import java.io.File;
import java.io.IOException;
public class ImageOperation {public static void thumbnailsImage(File inFile, File outFile, int imageSize) throws IOException {Thumbnails.of(inFile).size(imageSize, imageSize).toFile(outFile);}}

上面判断是否是图片文件的FileUtil.isImageFile方法:

public class FileUtil {public static final String[] IMG_FILE = {"bmp", "jpg", "png", "tif", "gif", "jpeg"};public static final String[] DOC_FILE = {"doc", "docx", "ppt", "pptx", "xls", "xlsx", "txt", "hlp", "wps", "rtf", "html", "pdf"};public static final String[] VIDEO_FILE = {"avi", "mp4", "mpg", "mov", "swf"};public static final String[] MUSIC_FILE = {"wav", "aif", "au", "mp3", "ram", "wma", "mmf", "amr", "aac", "flac"};public static final int IMAGE_TYPE = 1;public static final int DOC_TYPE = 2;public static final int VIDEO_TYPE = 3;public static final int MUSIC_TYPE = 4;public static final int OTHER_TYPE = 5;public static final int SHARE_FILE = 6;public static final int RECYCLE_FILE = 7;/*** 获取文件扩展名* @param fileName 文件名* @return 文件扩展名*/public static String getFileExtendName(String fileName) {if (fileName.lastIndexOf(".") == -1) {return "";}return fileName.substring(fileName.lastIndexOf(".") + 1);}/*** 判断是否为图片文件** @param extendName 文件扩展名* @return 是否为图片文件*/public static boolean isImageFile(String extendName) {for (int i = 0; i < IMG_FILE.length; i++) {if (extendName.equalsIgnoreCase(IMG_FILE[i])) {return true;}}return false;}}

java解压文件、复制文件、删除文件代码示例相关推荐

  1. java解压加密的7z格式文件

    引言 最近在 项目中需要解压带有密码的.7z文件,然后获得里面的数据,之前都是zip 文件没有接触过解压7z类型的 文件,在这分享一下解压工具类,该 工具类可以同时解压带有密码的7z文件和zip文件. ...

  2. java解压zip_Java实现zip压缩文件的解压

    需求描述: 前段时间写了一篇博客<Java实现对文本文件MD5加密并ftp传送到远程主机目录>,实现了一部分的业务需求.然而有些业务可能不止传送一个文件,有时候客户需要传多个文件,原有系统 ...

  3. java解压zip包_Java中文件的压缩与解压,每天进步一点点系列

    使用java.util.zip包,实现文件的压缩与解压,并提供了下载方法 注意 无论是调用createNewFile()创建文件,还是在创建输出流时由输出流负责创建文件,都必须保证父路径已经存在,否则 ...

  4. Linux中文件复制、删除、移动、压缩、解压命令

    Linux中文件复制.删除.移动.压缩.解压命令 复制 cp命令 命令:cp [-adfiprl]源文件或目录 目标文件或目录 说明:将指定源文件或目录复制到目标文件或目录 [选项]: -a 该选项通 ...

  5. java zip malformed_关于Java解压文件的一些坑及经验分享(MALFORMED异常)

    关于Java解压文件的一些坑及经验分享 就在本周, 测试人员找到我说现上的需求文档(zip格式的)无法预览了, 让我帮忙看看怎么回事. 这个功能也并不是我做的, 于是我便先看看线上日志有没有什么错误, ...

  6. Java解压Jar文件

    今天写点java解压jar文件的东西,以前项目中用到过,很简单... java中有专门的文件类型对应jar文件,那就是JarFile,用于从任何可以使用java.io.RandomAccessFile ...

  7. java 压缩 空目录_java zip压缩与解压-支持空目录,保留文件修改时间

    java zip压缩与解压-支持空目录,保留文件修改时间. 依赖于commons-io,commons-compress [Java]代码 import java.io.BufferedInputSt ...

  8. java解压/读取rar文件

    转自在此感谢作者:https://blog.csdn.net/lbf5210/article/details/51206642 <!-- 解压rar --> <dependency& ...

  9. java解压两层zip文件_Java解压缩zip - 解压缩多个文件或文件夹实例

    java解压缩zip - 多个文件(包括文件夹),具体如下: 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压. 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参 ...

  10. JAVA 创建文件和文件夹,删除文件和文件夹,复制文件和文件夹,移动文件和文件夹的实用工具类

    import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io ...

最新文章

  1. python基础04
  2. SDNU 1209.磊磊的随机数
  3. 恕我直言,90% 的应用场景都不需要用WebAssembly!
  4. python核心教程百度云_Python核心技术与实战 共44讲 中文pdf高清版
  5. [设计模式]策略模式
  6. iphone mac地址是否随机_iOS8随机MAC地址功能:需要满足前提要求
  7. mariadb使用mysql驱动_MariaDB安装与使用
  8. UVA 1152 4 Values Whose Sum is Zero 和为0的4个值 (中途相遇)
  9. ubuntukylin ubuntu1304
  10. 前沿技术分享,让你在算法圈“技”高一筹
  11. 机器学习书籍资料推荐
  12. 对比MySQL,一文看透HBase的能力及使用场景
  13. Python常用的字符串操作
  14. Webstorm—Webstorm汉化(图文详解)
  15. 推荐一款windows下好用的文件夹加密、文件加密软件(含使用说明)
  16. python画图matlab,matlab plot画图
  17. 中台和低代码,“零和”还是“竞合”?
  18. RecordRTC的视频录制,回放,截图,下载
  19. RefineDNet个人学习笔记
  20. golang远程桌面服务器,go+govcl+go-ole实现的windows远程桌面

热门文章

  1. android最大json,Android:解析大型JSON文件
  2. mysql底层用什么写的_天天写order by,你知道Mysql底层如何执行吗?
  3. linux邮件自动回复,debian上 postfix+dovecot+squirrelmail 实现 自动回复
  4. python 二维数组 长度_Python创建二维数组的正确姿势
  5. flash读取程序 msp430_MSP430单片机对片内FLASH的读写操作程序范例
  6. 【小白学习C++ 教程】一、Vscode和 Visual stdudio配置C++环境
  7. 七十一、Vue项目城市选择页搜索逻辑实现,边输入边搜索功能的解决办法:节流函数
  8. 梯度下降(Gradient Descent)的收敛性分析
  9. 当我们谈论「Chatbot」时,我们在读什么? | 论文集精选 #05
  10. 4.2 使用pytorch搭建VGG网络