package com.demo.util;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.nio.channels.FileChannel;
import java.text.DecimalFormat;
import java.util.UUID;
import java.util.zip.GZIPOutputStream;
public class FileUtils {
/**
* 格式化文件大小,根据文件大小不同使用不同单位
* @param size 文件大小
* @return 字符串形式的大小,包含单位(B,KB,MB,GB,TB,PB)
*/
public static String formatFileSize(long size) {
DecimalFormat formater = new DecimalFormat("####.00");
if (size < 1024L) {
return size + "B";
} else if (size < 1048576L) {
return formater.format(size / 1024f) + "KB";
} else if (size < 1073741824L) {
return formater.format(size / 1048576f) + "MB";
} else if (size < 1099511627776L) {
return formater.format(size / 1073741824f) + "GB";
} else if (size < 1125899906842624L) {
return formater.format(size / 1099511627776f) + "TB";
} else if (size < 1152921504606846976L) {
return formater.format(size / 1125899906842624f) + "PB";
}
return "size: out of range";
}
/**
* 从路径中获取文件名,包含扩展名
* @param path 路径
* @return 如果所传参数是合法路径,截取文件名,如果不是返回原值
*/
public static String getFileName(String path) {
if (path != null && (path.contains("/")||path.contains("\\"))) {
String fileName = path.trim();
int beginIndex;
if ((beginIndex=fileName.lastIndexOf("\\")) != -1) {
fileName = fileName.substring(beginIndex+1);
}
if ((beginIndex=fileName.lastIndexOf("/")) != -1) {
fileName = fileName.substring(beginIndex+1);
}
return fileName;
}
return path;
}
/**
* 从路径中获取文件名,不包含扩展名
* @param path 路径
* @return 如果所传参数是合法路径,截取文件名,如果不是返回原值
*/
public static String getFileNameWithoutSuffix(String path) {
if (path != null && (path.contains("/")||path.contains("\\"))) {
String fileName = path.trim();
int beginIndex;
if ((beginIndex=fileName.lastIndexOf("\\")) != -1) {
fileName = fileName.substring(beginIndex+1);
}
if ((beginIndex=fileName.lastIndexOf("/")) != -1) {
fileName = fileName.substring(beginIndex+1);
}
return deleteSuffix(fileName);
}
return deleteSuffix(path);
}
/**
* 获取扩展名
* @param s 路径或后缀
* @return 不存在后缀时返回null
*/
public static String getSuffix(String s) {
if (s.contains(".")) {
return s.substring(s.lastIndexOf("."));
}
return null;
}
/**
* 返回去掉扩展名的文件名
*/
public static String deleteSuffix(String fileName) {
if (fileName.contains(".")) {
fileName = fileName.substring(0, fileName.lastIndexOf("."));
}
return fileName;
}
/**
* 检查是否有同名文件,有则在自动在文件名后加当前时间的毫秒值
*/
public static File checkAndRename(File target) {
if (target.exists()) {
String fileName = target.getName();
if (fileName.contains(".")) {
String sub = fileName.substring(0, fileName.lastIndexOf("."));
fileName = fileName.replace(sub, sub + "_" + System.currentTimeMillis());
} else {
fileName = fileName+"_"+ System.currentTimeMillis();
}
return new File(target.getParent(), fileName);
}
return target;
}
/**
* 移动文件或文件夹
* @param src 要移动的文件或文件夹
* @param target 目标文件或文件夹。类型需与源相同,如源为文件,则目标也必须是文件
* @param replace 当有重名文件时是否替换。传false时,自动在原文件名后加上当前时间的毫秒值
* @return 移动成功返回true,否则返回false
*/
public static boolean moveFile(File src, File target, boolean replace) {
if (src == null || !src.exists() || target == null) {
return false;
}
if (!replace) {
target = checkAndRename(target);
}
copy(src, target);
return compareAndDeleteSrc(src, target);
}
private static boolean compareAndDeleteSrc(File src, File target) {
//如果文件存在,并且大小与源文件相等,则写入成功,删除源文件
if (src.isFile()) {
if (target.exists() && target.length() == src.length()) {
src.delete();
return true;
}
} else {
if (getDirSize(src) == getDirSize(target)) {
deleteDir(src, true);
return true;
}
}
return false;
}
/**
* 移动文件或文件夹
* @param src 要移动的文件或文件夹
* @param target 目标文件或文件夹。类型需与源相同,如源为文件,则目标也必须是文件
* @param replace 当有重名文件时是否替换。传false时,自动在原文件名后加上当前时间的毫秒值
* @return 移动成功返回true,否则返回false
*/
public static boolean moveFileFit(File src, File target, boolean replace) {
if (src == null || !src.exists() || target == null) {
return false;
}
if (!replace) {
target = checkAndRename(target);
}
copyFit(src, target);
//如果文件存在,并且大小与源文件相等,则写入成功,删除源文件
return compareAndDeleteSrc(src, target);
}
/**
* 去掉字符串中重复部分字符串
* @param dup 重复部分字符串
* @param strs 要去重的字符串
* @return 按参数先后顺序返回一个字符串数组
*/
public static String[] removeDuplicate(String dup, String... strs) {
for (int i = 0; i < strs.length; i++) {
if (strs[i] != null) {
strs[i] = strs[i].replaceAll(dup+"+", "");
}
}
return strs;
}
/**
* 获取随机UUID文件名
* @param fileName 原文件名
* @return 生成的文件名
*/
public static String generateRandonFileName(String fileName) {
// 获得扩展名
int beginIndex = fileName.lastIndexOf(".");
String ext = "";
if (beginIndex != -1) {
ext = fileName.substring(beginIndex);
}
return UUID.randomUUID().toString() + ext;
}
/**
* 删除文件夹
* @param dir 文件夹
* @param includeSelf 是否包括本身
*/
public static void deleteDir(File dir, boolean includeSelf) {
File[] files = dir.listFiles();
if (files != null) {
for (File f : files) {
if (f.isDirectory()) {
deleteDir(f, true);
} else {
f.delete();
}
}
}
if (includeSelf)
dir.delete();
}
/**
* 删除文件内所有文件,不包�
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于Java影院管理系统源码.zip (598个子文件)
CharacterParser.class 12KB
CharacterParser.class 12KB
FileUtils.class 10KB
FileUtils.class 10KB
MovieMgrServlet.class 8KB
MovieMgrServlet.class 8KB
OrderDaoImpl.class 7KB
OrderDaoImpl.class 7KB
Utils.class 6KB
Utils.class 6KB
UserTicketServlet.class 6KB
UserTicketServlet.class 6KB
GenerateOrderServlet.class 6KB
GenerateOrderServlet.class 6KB
PlanServiceImpl.class 5KB
DataSourceMgr.class 5KB
DataSourceMgr.class 5KB
PlanServiceImpl.class 5KB
PlanMgrServlet.class 5KB
PlanMgrServlet.class 5KB
DateUtils.class 5KB
DateUtils.class 5KB
EvaluateMgrServlet.class 5KB
WriteEvaluateServlet.class 5KB
OrderMgrServlet.class 5KB
WriteEvaluateServlet.class 5KB
EvaluateMgrServlet.class 5KB
UserServiceImpl.class 5KB
UserServiceImpl.class 5KB
OrderMgrServlet.class 5KB
MovieSessionServlet.class 4KB
MovieSessionServlet.class 4KB
PlanDaoImpl.class 4KB
PlanDaoImpl.class 4KB
BaseDao.class 4KB
BaseDao.class 4KB
SeatServlet.class 4KB
SeatServlet.class 4KB
MoviceServiceImpl.class 4KB
MoviceServiceImpl.class 4KB
EvaluateDaoImpl.class 4KB
EvaluateDaoImpl.class 4KB
ValicateImgServlet.class 4KB
ValicateImgServlet.class 4KB
UserDaoImpl.class 4KB
UserDaoImpl.class 4KB
HallMgrServlet.class 3KB
RegisterServlet.class 3KB
HallMgrServlet.class 3KB
RegisterServlet.class 3KB
MovieDetailServlet.class 3KB
MovieDaoImpl.class 3KB
MovieDetailServlet.class 3KB
MovieDaoImpl.class 3KB
Ticket.class 3KB
Ticket.class 3KB
UserMgrServlet.class 3KB
LoginServlet.class 3KB
LoginServlet.class 3KB
UserMgrServlet.class 3KB
SalesMgrServlet.class 3KB
SalesMgrServlet.class 3KB
PayServlet.class 3KB
EncodingFilter$MyHttpServletRequest.class 3KB
EncodingFilter$MyHttpServletRequest.class 3KB
PayServlet.class 3KB
HallServiceImpl.class 3KB
HallServiceImpl.class 3KB
ChangePwdServlet.class 3KB
ChangePwdServlet.class 3KB
AdminLoginServlet.class 3KB
UpdateInfoServlet.class 3KB
MD5Utils.class 3KB
MD5Utils.class 3KB
UpdateInfoServlet.class 3KB
Movie.class 3KB
Movie.class 3KB
AdminLoginServlet.class 3KB
DaoInitializer.class 2KB
DaoInitializer.class 2KB
HomeServlet.class 2KB
HomeServlet.class 2KB
OrderServiceImpl.class 2KB
PicUtils.class 2KB
PicUtils.class 2KB
OrderServiceImpl.class 2KB
ReplyDaoImpl.class 2KB
ReplyDaoImpl.class 2KB
HallDaoImpl.class 2KB
EncodingFilter.class 2KB
EncodingFilter.class 2KB
HallDaoImpl.class 2KB
AdminLoginFilter.class 2KB
UserLoginFilter.class 2KB
AdminLoginFilter.class 2KB
BaseFactory.class 2KB
BaseFactory.class 2KB
Plan.class 2KB
Plan.class 2KB
UserLoginFilter.class 2KB
共 598 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
栾还是恋
- 粉丝: 29
- 资源: 4993
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- SM4-CFB代码实现及基本补位示例代码
- 基于asp的搜索引擎开发(源代码)
- Java课设相关材料.zip
- JSP搜索引擎的研究与实现(源代码)
- delphi 12 控件之delphipi.0.85.setup.exe
- 数据库管理工具:dbeaver-ce-23.0.2-amd64.deb
- 搜索链接淘特搜索引擎共享版-tot-search-engine
- 数据库管理工具:dbeaver-ce-24.0.3-macos-x86-64.dmg
- 数据库管理工具:dbeaver-ce-24.0.1-x86-64-setup.exe
- GoogleCloud2024年数据和AI趋势报告+生成式AI+数据治理
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功