java常用开源工具类

StringUtils

pom

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.10</version>
</dependency>

判断字符串是否为空

用StringUtils.isEmpty(str)来代替:if (null == str || str.isEmpty())

if (StringUtils.isEmpty(str))

isBlank,也是用来判断字符串是否为空,主要区别:

// 如果字符串都是空格的话,
StringUtils.isBlank(" ")       = true;
StringUtils.isEmpty(" ")       = false

CollectionUtils

pom

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.4</vesion>
</dependency>

List/Set 集合判空

if(CollectionUtils.isEmpty(list))

Map 等集合进行判空

if (MapUtils.isEmpty(map)) 

数组判空

if (ArrayUtils.isEmpty(array)) 

将数组加入到现有集合

List<String> listA = new ArrayList<>();
listA.add("1");
listA.add("2");
listA.add("3");
String[] arrays = new String[]{
    
    "a", "b", "c"};
CollectionUtils.addAll(listA, arrays);

DateUtils/DateFormatUtils,解决 Date 与字符串转化问题

原来的SimpleDateFormat,不是线程安全的,多线程环境一定要注意使用安全。
使用

Date 转化为字符串

DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss");

字符串 转 Date

DateUtils.parseDate("2020-05-07 22:00:00","yyyy-MM-dd HH:mm:ss");

除了格式转化之外,DateUtils 还提供时间计算的相关功能。

常用时间计算

Date now = new Date();
// Date 加 1 天
Date addDays = DateUtils.addDays(now, 1);
// Date 加 33 分钟
Date addMinutes = DateUtils.addMinutes(now, 33);
// Date 减去 233 秒
Date addSeconds = DateUtils.addSeconds(now, -233);
// 判断是否 Wie 同一天
boolean sameDay = DateUtils.isSameDay(addDays, addMinutes);
// 过滤时分秒,若 now 为 2020-05-07 22:13:00 调用 truncate 方法以后
// 返回时间为 2020-05-07 00:00:00
Date truncate = DateUtils.truncate(now, Calendar.DATE);

I/O 相关

FileUtils-文件操作工具类

FileUtils.copyDirectory/FileUtils.copyFile 文件/文件夹拷贝

// 拷贝文件
File fileA = new File("E:\\test\\test.txt");
File fileB = new File("E:\\test1\\test.txt");
FileUtils.copyFile(fileA,fileB);

FileUtils.listFiles 获取指定文件夹上所有文件

// 按照指定文件后缀如java,txt等去查找指定文件夹的文件
File directory = new File("E:\\test");
FileUtils.listFiles(directory, new String[]{
    
    "txt"}, false);

FileUtils.readLines 读取该文件所有行

// 读取指定文件所有行 不需要使用 while 循环读取流了
List<String> lines = FileUtils.readLines(fileA)

FileUtils.writeLines,直接将集合中数据,一行行写入文本

// 可以一行行写入文本
List<String> lines = new ArrayList<>();
.....
FileUtils.writeLines(lines)

IOUtils-I/O 操作相关工具类

FileUtils 主要针对相关文件操作,IOUtils 更加针对底层 I/O,可以快速读取 InputStream。

IOUtils可以适用于一个比较试用的场景,比如支付场景下,HTTP 异步通知场景。如果我们使用 JDK 原生方法写:

从 Servlet 获取异步通知内容

byte[] b = null;
ByteArrayOutputStream baos = null;
String respMsg = null;
try {
    
    
    byte[] buffer = new byte[1024];
    baos = new ByteArrayOutputStream();
   // 获取输入流
    InputStream in = request.getInputStream();
    for (int len = 0; (len = in.read(buffer)) > 0; ) {
    
    
        baos.write(buffer, 0, len);
    }
    b = baos.toByteArray();
    baos.close();
   // 字节数组转化成字符串
    String reqMessage = new String(b, "utf-8");
} catch (IOException e) {
    
    
  
} finally {
    
    
    if (baos != null) {
    
    
        try {
    
    
            baos.close();
        } catch (IOException e) {
    
    
           
        }
    }
}

如果使用 IOUtils

// 将输入流信息全部输出到字节数组中
byte[] b = IOUtils.toByteArray(request.getInputStream());
// 将输入流信息转化为字符串
String resMsg = IOUtils.toString(request.getInputStream());

Guava 计时工具类

pom

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>18.0</version>
        </dependency>

elapsed(TimeUnit desiredUnit) 定义返回的单位秒、分钟之类

// 创建之后立刻计时,若想主动开始计时
Stopwatch stopwatch = Stopwatch.createStarted();
// 创建计时器,但是需要主动调用 start 方法开始计时
// Stopwatch stopwatch = Stopwatch.createUnstarted();
// stopWatch.start();
// 模拟其他代码耗时
TimeUnit.SECONDS.sleep(2l);

// 当前已经消耗的时间
System.out.println(stopwatch.elapsed(TimeUnit.SECONDS));;

TimeUnit.SECONDS.sleep(2l);

// 停止计时 未开始的计时器调用 stop 将会抛错 IllegalStateException
stopwatch.stop();
// 再次统计总耗时
System.out.println(stopwatch.elapsed(TimeUnit.SECONDS));;
// 重新开始,将会在原来时间基础计算,若想重新从 0开始计算,需要调用 stopwatch.reset()
stopwatch.start();
TimeUnit.SECONDS.sleep(2l);
System.out.println(stopwatch.elapsed(TimeUnit.SECONDS));

输出结果:
2
4
6

猜你喜欢

转载自blog.csdn.net/amunamuna/article/details/106198406
今日推荐