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 下载量 153 浏览量
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+
- 资源: 7361
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 面向儿童和青少年的编程学习平台-Scratch图形化编程语言
- sm32单片机控制电机旋转
- 基于Delphi的Windows应用开发详细教程
- 【重磅,更新!】全国省级绿色金融指数:原始数据与指标解释(2010-2021)
- 基于python开发的多智能体路径规划+电路规划+源码+项目文档(毕业设计&课程设计&项目开发)
- 第8章 视频流媒体直播实践.docx
- 高等教育类项目课题申报书合集(产学合作协同、教学改革、教学成果奖)【重磅,更新!】
- 用QT写的usb摄像头播放器,可以用于linux平台和Windows平台 因为QT配置不同在不同平台下都可以编译,希望对你有所帮助
- Matlab语言教程:覆盖基础知识至高级应用
- 【重磅,更新!】经济管理类期刊发文指南(含SSCI、C刊、C扩、北核等)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功