package com.gitee.hermer.boot.jee.commons.utils;
import java.io.*;
import java.net.URI;
import java.net.URL;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
import java.util.UUID;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.gitee.hermer.boot.jee.commons.collection.CollectionUtils;
import com.gitee.hermer.boot.jee.commons.constants.EncodingConstant;
import com.gitee.hermer.boot.jee.commons.constants.OSType;
import com.gitee.hermer.boot.jee.commons.io.IOUtils;
import com.gitee.hermer.boot.jee.commons.log.Logger;
import com.gitee.hermer.boot.jee.commons.reflect.ClassUtils;
public class FileUtils {
static Logger logger = Logger.getLogger(FileUtils.class);
/**默认的标准推荐使用的文件路径分隔符*/
public static final String UNIX_SEPARATOR = "/";
/** 默认的不推荐使用的文件路径分隔符*/
public static final String WINDOWS_SEPARATOR = "\\";
/** Class文件扩展名 */
public static final String CLASS_EXT = ".class";
/** Jar文件扩展名 */
public static final String JAR_FILE_EXT = ".jar";
/** 在Jar中的路径jar的扩展名形式 */
public static final String JAR_PATH_EXT = ".jar!";
/** 当Path为文件形式时, path会加入一个表示文件的前缀 */
public static final String PATH_FILE_PRE = "file:";
/**默认的http协议地址头*/
public static final String DEFAULT_PREFIX_HTTP_PROTOCOL = "http://";
/**默认文件copy缓冲区大小*/
public static final int FILE_COPY_BUFFER_SIZE = 20 * 1024 * 1024;
private FileUtils() {
// 工具类无需对象实例化
}
/**
* <p>
* 纠正不标准的文件路径分隔符 如:\,\\,\\\,//,/// -> /
* </p>
*
* @param path
* @return
*/
public static String formatFilePath(String path) {
if (!StringUtils.isEmpty(path)) {
boolean startWithHttpProtocol = path.toLowerCase().startsWith(DEFAULT_PREFIX_HTTP_PROTOCOL);
if (startWithHttpProtocol) {
path = path.substring(DEFAULT_PREFIX_HTTP_PROTOCOL.length());
}
// 将一个或多个“\”转化成“/”
path = path.replaceAll("\\\\{1,}", "/");
// 将多个“/”转化成一个“/”
path = path.replaceAll("\\/{2,}", "/");
if (startWithHttpProtocol) {
path = DEFAULT_PREFIX_HTTP_PROTOCOL + path;
}
}
return path;
}
/**
* 获取当前工作目录
* @return 当前工作目录
*/
public static String getWorkPath() {
return System.getProperty("user.dir");
}
/**
* 得到文件的输入流,如无法定位文件返回null。
* @param relativePath 文件相对当前应用程序的类加载器的路径。
* @return 文件的输入流。
*/
public static InputStream getResourceStream(String relativePath) {
return Thread.currentThread().getContextClassLoader().getResourceAsStream(relativePath);
}
/**
* 关闭输入流。
* @param is 输入流,可以是null。
*/
public static void closeInputStream(InputStream is) {
if (is != null) {
try {
is.close();
} catch (IOException e) {
}
}
}
public static void closeFileOutputStream(FileOutputStream fos) {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
}
}
}
/**
* <p>
* 获取文件格式,小写,例如: txt、jpg等
* </p>
*
* @param imageFileName
* @return
*/
public static String getFileFormat(String fileName) {
return fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
}
@SuppressWarnings("rawtypes")
public static String getJarExecPath(Class clazz) {
String path = clazz.getProtectionDomain().getCodeSource().getLocation().getPath();
if (OSUtils.getOSname().equals(OSType.Windows)) {
return path.substring(1);
}
return path;
}
/**
* <p>
* 获取文件大小,单位字节
* </p>
* @param fileFullPath
* @return
* @throws IOException
*/
public static int getFileSize(String fileFullPath) throws IOException {
int size = 0;
fileFullPath = formatFilePath(fileFullPath);
File file = new File(fileFullPath);
if (file.exists() && !isDirectory(fileFullPath)) {
FileInputStream fis = new FileInputStream(file);
size = fis.available();
if (fis != null) {
fis.close();
}
}
return size;
}
/**
* <p>
* 根据文件路径获取其目录
* </p>
*
* @param filePath
* @return
*/
public static String getFileDirectory(String filePath) {
if (!StringUtils.isEmpty(filePath)) {
filePath = formatFilePath(filePath);
if (isDirectory(filePath)) {
return filePath;
} else {
return filePath.substring(0, filePath.lastIndexOf(UNIX_SEPARATOR));
}
}
return filePath;
}
/**
* <p>
* 重命名文件名
* </p>
* @param originalName - 原文件名
* @param renameAll - true-舍弃原文件名完全做随机重新命名;false-在原文件名后面做随机重命名
* @param appendStr - 加在文件名后的追加后缀,e.g. ${originalName}_${appendStr}.jpg
* @return
* @throws Exception
*/
public static String renameFileName(String originalName, boolean renameAll, String appendStr) {
String suffix = originalName.substring(originalName.lastIndexOf('.') + 1);
String fileName = originalName.substring(0, originalName.lastIndexOf('.'));
String randomName = UUID.randomUUID().toString().replace("-", "");
if (!StringUtils.isEmpty(appendStr)) {
return String.format("%s_%s.%s", renameAll ? randomName : fileName + "_" + randomName.substring(0, 8), appendStr, suffix);
} else {
return String.format("%s.%s", renameAll ? randomName : fileName + "_" + randomName.substring(0, 8), suffix);
}
}
/**
* 根据完整文件名,得到文件所在目录
*
* @param filePath
* @return
*/
public static String getDirName(String filePath) {
File f = new File(filePath);
return f.getParent();
}
/**
* 获得随机的文件名路径
*
* @param filePath
* @return
*/
public static String getAutoFileName(String filePath) {
long curtime = System.nanoTime();
String fileName = curtime + ".txt";
File ff = new File(filePath + File.separator + fileName);
if (ff.exists())
return null;
return ff.getAbsolutePath();
}
/**
* 当前目录路径
*/
public static String currentWorkDir = System.getProperty("user.dir") + "/";
/**
* 加载classPath下的属性文件
*
* @param fileName
* 比如:“/properties/mail.properties”
* @return
* @throws Exception
*/
public static Properties loadProperties(String fileName) {
try {
Properties p = new Properties();
p.load(FileUtils.class.getResourceAsStream(fileName));
return p;
} catch (Exception e) {
// logger.error(fileName + " loadProperties error", e);
e.printStackTrace();
}
return null;
}
/**
* 左填充
*
* @param str
* @param length
* @param ch
* @return
*/
public static String leftPad(String str, int length, char ch) {
if (str.length() >= length) {
return str;
}
char[] chs = new char[length];
Arrays.fill(chs, ch);
char[] src = str.toCharArray();
System.arraycopy(src, 0, chs, length - src.length, src.length);
return new String(chs);
没有合适的资源?快使用搜索试试~ 我知道了~
Boot-Jee是Java语言的分布式系统架构 使用Spring整合开源框架
共333个文件
java:223个
prefs:30个
xml:22个
0 下载量 113 浏览量
2023-10-07
10:06:22
上传
评论
收藏 397KB ZIP 举报
温馨提示
Boot-Jee是Java语言的分布式系统架构。 使用Spring整合开源框架。使用Maven对项目进行模块化管理,提高项目的易开发性、扩展性。封装监控、路由映射、基本公用数据操作、通信,目的是为了让开发者更加关注业务实现。
资源推荐
资源详情
资源评论
收起资源包目录
Boot-Jee是Java语言的分布式系统架构 使用Spring整合开源框架 (333个子文件)
rest-contoller-template.bje 2KB
service-template.bje 286B
.classpath 2KB
.classpath 2KB
.classpath 2KB
.classpath 2KB
.classpath 1KB
.classpath 1KB
.classpath 1KB
.classpath 1KB
.classpath 1KB
.classpath 1KB
.classpath 1KB
.classpath 1KB
.classpath 1KB
.classpath 1KB
.classpath 351B
spring.factories 372B
spring.factories 274B
spring.factories 221B
spring.factories 140B
spring.factories 138B
spring.factories 137B
spring.factories 132B
spring.factories 130B
.gitignore 304B
FileUtils.java 76KB
SingleRedisClient.java 58KB
ClusterRedisClient.java 49KB
ShardedRedisClient.java 47KB
ClassUtils.java 41KB
StringUtils.java 40KB
CollectionUtils.java 28KB
IbatisGenerateMapper.java 18KB
NumberUtils.java 13KB
OptimisticLockerPlugin.java 12KB
RedisClient.java 12KB
StringCache.java 11KB
Logger.java 11KB
QrcodeUtils.java 11KB
IOUtils.java 11KB
CacheConfiguration.java 10KB
DateUtils.java 9KB
SimpleHttpTool.java 9KB
PinyinUtils.java 8KB
ByteCache.java 8KB
ThymeleafAutoConfiguration.java 8KB
MatrixToImageWriter.java 8KB
RedisCache.java 8KB
RedisClientFactoryAdapter.java 7KB
RedisCacheChannel.java 7KB
MessageHandler.java 7KB
UpmsShiroAutoConfiguration.java 7KB
ConnectionDBUtil.java 7KB
RedisCacheProxy.java 7KB
JarUtils.java 7KB
IdWorker.java 7KB
OnLikePropertyConditional.java 6KB
MetriceAutoConfiguration.java 6KB
BeanCopyUtils.java 6KB
ReflectUtils.java 6KB
ListUtils.java 6KB
JGroupsCacheChannel.java 6KB
BASE64Encoder.java 5KB
ZipUtils.java 5KB
SyncQueue.java 5KB
OSUtils.java 5KB
BaseServiceImpl.java 5KB
ActiveMQExecute.java 5KB
GenerateProperties.java 5KB
BootCacheChannel.java 5KB
SlowSqlPlugin.java 5KB
Assert.java 5KB
CacheManager.java 5KB
RedisCacheService.java 5KB
ActiveMQBeanSuperService.java 5KB
IOAutoConfiguration.java 5KB
RedisCacheProvider.java 4KB
EhCacheClient.java 4KB
BootCacheProperties.java 4KB
ThymeleafProperties.java 4KB
SimpleDownLoader.java 4KB
EhCache.java 4KB
RSAUtils.java 4KB
Command.java 4KB
BaseInfo.java 4KB
OrmMybatisAutoConfiguration.java 3KB
RedisDistributedLockImpl.java 3KB
RedisDistributedLockImpl.java 3KB
WatchMonitor.java 3KB
SocketUtils.java 3KB
UtilsContext.java 3KB
BootMappingHandler.java 3KB
RegexUtils.java 3KB
RedisCacheClient.java 3KB
KryoPoolSerializer.java 3KB
Tunnel.java 3KB
CacheManager.java 3KB
ByteBufferPool.java 3KB
BaseRunnable.java 3KB
共 333 条
- 1
- 2
- 3
- 4
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 7451
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 质量安全排查报告.docx
- 职业中专技工学校专业评估表.docx
- 质量控制资料核查表:建筑保温工程.docx
- 质量目标统计数据表.docx
- 质量内审方案.docx
- 中国古今地名对照表.docx
- 智力残疾评定标准一览表.docx
- 中央造林补助实施方案小班一览表.docx
- 肘关节功能丧失程度评定表.docx
- 重要神经及血管损伤评定.docx
- 自建房安全整治和农村住房建设考评内容和评分标准.docx
- 走访服务企业登记表.doc
- 智能车开发技术的多领域深度解析及应用
- 西红柿叶片图像目标检测数据【已标注,约700张数据,YOLO 标注格式】
- 蓝桥杯开发技术的全面解析与备赛建议
- 相当于去中心化的QQ版本了
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功