作为一个Java程序员,这 8 个开源类库你必须知道!
发布日期:2021-04-30 21:10:15
浏览次数:101
分类:精选文章
本文共 7809 字,大约阅读时间需要 26 分钟。
8 个 Java 工具类及其常用方法分享
在 Java 开发过程中,工具类是每个程序员的良好伙伴。它们可以帮助我们高效解决问题,提升开发效率。本文将为大家介绍 8 个常用的 Java 工具类及其实用方法,并附带开发实例,帮助开发者更好地理解和应用这些工具。
1. IOUtils
类名:org.apache.commons.io.IOUtils
简介:
IOUtils 是一个操作 IO 流的工具类,常用于处理文件和字节流操作。它提供了一系列便捷的方法,能够简化 IO 操作。常用方法:
closeQuietly():关闭 IO 流,并忽略 null 值和异常。IOUtils.closeQuietly(output);
copy():将字节从输入流复制到输出流。IOUtils.copy(inputStream, new FileOutputStream(File));
toByteArray():将输入流内容以 byte[] 形式获取。Connection conn = new URL(url).openConnection();InputStream is = conn.getInputStream();byte[] result = IOUtils.toByteArray(is);
write():将字符或字节写入输出流。IOUtils.write("沉默王二", response.getOutputStream(), "UTF-8");toInputStream():将字符串转换为输入流。String content = req.getParameter("content");InputStream inputStream = IOUtils.toInputStream(content, "utf-8");readLines():从输入流中读取一行一行的字符串。List
lines = IOUtils.readLines(new InputStreamReader(new FileInputStream(file), "utf-8")); copyLarge():高效复制大文件内容。private File downloadFile(HttpResponse response) { File dir = new File("downloadedFiles"); if (!dir.exists()) { dir.mkdir(); } File outputFile = new File("downloadedFiles/temp" + RandomStringUtils.randomAlphanumeric(3)); try { IOUtils.copyLarge(response.getEntity().getContent(), new FileOutputStream(outputFile)); } catch (Exception e) { throw new RuntimeException(e); } finally { request.releaseConnection(); }}readFully():将输入流内容读入字节数组。byte[] intArray = new byte[Bytes.SIZEOF_INT];IOUtils.readFully(in, intArray);
2. FileUtils
类名:org.apache.commons.io.FileUtils
简介:
FileUtils 用于操作文件和目录,提供了文件管理、复制、删除等功能,极大简化了文件操作逻辑。常用方法:
deleteDirectory():删除指定目录。FileUtils.deleteDirectory(file);
readFileToString():将文件内容读入字符串。String fileAsString = FileUtils.readFileToString(reportFile);
deleteQuietly():安全删除文件,不抛出异常。FileUtils.deleteQuietly(outputFile);
copyFile():文件复制。FileUtils.copyFile(source, dest);
writeStringToFile():将字符串写入文件。FileUtils.writeStringToFile(templateFile, generatedText, Charset.forName("UTF-8"));forceMkdir():强制创建目录。File uploadDirectory = new File(this.uploadPath);if (!uploadDirectory.exists()) { FileUtils.forceMkdir(uploadDirectory);}write():将字符写入文件。FileUtils.write(new File("C:\\Users\\cmower\\test.txt"), "沉默王二", "utf-8");listFiles():列出目录下的所有文件。public void processResultsDirectory(String dirName) { File root = new File(dirName); try { Collectionfiles = FileUtils.listFiles(root, new RegexFileFilter(jmeterJTLFileName), DirectoryFileFilter.DIRECTORY); for (Iterator iterator = files.iterator(); iterator.hasNext(); ) { File file = (File) iterator.next(); parse(file); } } catch (Exception e) { e.printStackTrace(); }} copyDirectory():复制整个目录。FileUtils.copyDirectory(source, dest);
forceDelete():强制删除文件或目录及其子目录。FileUtils.forceDelete(tmpFile);
3. StringUtils
类名:org.apache.commons.lang3.StringUtils
简介:
StringUtils 是一个操作字符串的工具类,支持 null 安全操作,适用于各种字符串处理场景。常用方法:
isBlank():判断字符串是否为空、全空格或 null。if (StringUtils.isBlank(name)) { throw new IllegalArgumentException("姓名不能为空");}isNotBlank():与 isBlank() 检查结果相反。isEmpty():判断字符串是否为空或 null。if (StringUtils.isEmpty(name)) { throw new IllegalArgumentException("姓名不能为 null 或者空字符串");}isNotEmpty():与 isEmpty() 检查结果相反。join():将多个对象连接成一个字符串。StringUtils.join(null) = nullStringUtils.join([]) = ""StringUtils.join([null]) = ""StringUtils.join(["沉默", "王二"]) = "沉默王二"
equals():比较两个字符串是否相等。StringUtils.equals(null, null) = trueStringUtils.equals(null, "沉默王二") = falseStringUtils.equals("沉默王二", null) = falseStringUtils.equals("沉默王二", "沉默王二") = truesplit():将字符串拆分为数组,拆分符为空白字符。StringUtils.split(null) = nullStringUtils.split("") = []StringUtils.split("沉默王二 沉默王三") = ["沉默王二", "沉默王三"]replace():替换字符串中的所有匹配项。StringUtils.replace(null, *, *) = nullStringUtils.replace("", *, *) = ""StringUtils.replace("any", null, *) = "any"StringUtils.replace("any", *, null) = "any"StringUtils.replace("any", "", *) = "any"
4. FilenameUtils
类名:org.apache.commons.io.FilenameUtils
简介:
FilenameUtils 用于操作文件名和路径,提供文件扩展名提取、路径拼接、文件名匹配等功能。常用方法:
getExtension():获取文件扩展名。FilenameUtils.getExtension("牛逼.txt") = "txt"FilenameUtils.getExtension("a/b/牛逼.jpg") = "jpg"getBaseName():获取文件名或路径名。FilenameUtils.getBaseName("a/b/牛逼.txt") = "牛逼"FilenameUtils.getBaseName("牛逼.txt") = "牛逼"getName():获取文件名和扩展名。FilenameUtils.getName("a/b/牛逼.txt") = "牛逼.txt"concat():拼接路径和文件名。FilenameUtils.concat("/foo/", "bar") = "/foo/bar"wildcardMatch():检查文件名是否匹配指定格式。wildcardMatch("c.txt", "*.txt") = truewildcardMatch("c.txt", "*.jpg") = falseseparatorsToUnix():将路径分隔符转换为 Unix 格式。FilenameUtils.separatorsToUnix("my/unix/filename") = "my/unix/filename"getFullPath():获取文件的完整路径。getFullPath("C:\a\b\c.txt") = "C:\a\b\c.txt"
5. ArrayUtils
类名:org.apache.commons.lang3.ArrayUtils
简介:
ArrayUtils 用于操作数组,提供元素添加、查找、克隆等功能,适用于数组处理。常用方法:
contains():检查数组是否包含指定值。public static boolean containsAll(Object[] one, Object[] two) { for (Object b : two) { if (!ArrayUtils.contains(one, b)) { return false; } } return true;}addAll():将另一个数组的所有元素添加到当前数组。ArrayUtils.addAll(null, null) = nullArrayUtils.addAll(array1, null) = cloned copy of array1
clone():浅拷贝数组。public QualityGateTask[] getQueue() { return (QualityGateTask[]) ArrayUtils.clone(queue);}isEmpty():判断数组是否为空。if (ArrayUtils.isEmpty(objectIds)) { throw new IllegalArgumentException("对象的ID不能为空");}add():在数组中添加元素。ArrayUtils.add(null, true) = [true]ArrayUtils.add([true], false) = [true, false]
subarray():截取数组子数组。public byte[] fetchData(String blobKey, long startIndex, long l) { CountingInputStream inputStream = new CountingInputStream(getInputStream(blobKey)); byte[] bytes = new byte[(int) l]; try { int readSize = inputStream.read(bytes, (int) startIndex, (int) l); if (readSize < l) { bytes = ArrayUtils.subarray(bytes, 0, readSize - 1); } } catch (IOException e) { LOGGER.warn("Failed to read bytes", e); } finally { try { inputStream.close(); } catch (IOException ignored) { LOGGER.warn("Exception while closing inputStream", ignored); } } return bytes;}indexOf():查找数组中的指定元素。ArrayUtils.indexOf(idxVal, i);
6. DigestUtils
类名:org.apache.commons.codec.digest.DigestUtils
简介:
DigestUtils 提供了常用加密算法的工具类,支持 MD5、SHA-1 等算法。常用方法:
md5Hex():计算 MD5 摘要并返回十六进制字符串。DigestUtils.md5Hex("沉默王二");md5():返回 MD5 字节数组。DigestUtils.md5("沉默王二");
7. StringEscapeUtils
类名:org.apache.commons.text.StringEscapeUtils
简介:
StringEscapeUtils 用于字符串的 HTML 转义和反转义,支持 HTML4 和 XML 转义。常用方法:
unescapeHtml4():反转义 HTML。StringEscapeUtils.unescapeHtml4("<div></div>") = " "escapeHtml4():转义 HTML。StringEscapeUtils.escapeHtml4(" ") = "<div></div>"escapeJava():转义 Java 特殊字符。StringEscapeUtils.escapeJava("沉默王二") = "\u6C89\u9ED8\u738B\u4E8C"unescapeJava():反转义 Java 转义字符。StringEscapeUtils.unescapeJava("\u6C89\u9ED8\u738B\u4E8C") = "沉默王二"
8. BeanUtils
类名:org.apache.commons.beanutils.BeanUtils
简介:
BeanUtils 用于动态获取和设置 JavaBean 的属性值,适用于对象属性的灵活操作。常用方法:
copyProperties():拷贝对象的属性。private static void dto2Entity() { UserDTO user = new UserDTO(); user.setId(1L); user.setUsername("joking"); user.setCreationDate("2016-04-20"); EUser u = new EUser(); ConvertUtils.register(new DateStringConverter(), Date.class); try { BeanUtils.copyProperties(u, user); } catch (IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); }}getProperty():获取对象属性值。String fieldValue = BeanUtils.getProperty(value, fieldName);
setProperty():设置对象属性值。BeanUtils.setProperty(object, propertyName, value);
通过这些工具类和方法,开发者可以显著提升代码的可读性和 maintainability,减少重复代码,同时提高工作效率。希望这篇文章能为大家提供有价值的参考,助力 Java 开发事业!
发表评论
最新留言
感谢大佬
[***.8.128.20]2026年06月19日 12时14分27秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php生成二维码到图片上
2023-03-01
php生成二维码并下载图片(适应于框架)
2023-03-01
PHP生成及获取JSON文件的方法
2023-03-01
PHP生成唯一不重复的编号
2023-03-01
PHP生成器-动态生成内容的数组
2023-03-01
PHP的ip2long和long2ip升级函数
2023-03-01
php的web路径获取
2023-03-01
php的一些小笔记--字符串
2023-03-01
php的几种运行模式CLI、CGI、FastCGI、mod_php
2023-03-01
php的四大特性八大优势
2023-03-01
RabbitMQ
2023-03-01
PHP的威胁函数与PHP代码审计实战
2023-03-01
PHP的引用举例
2023-03-01
PHP相关代码
2023-03-01
RabbitMQ
2023-03-01
php知识点记录
2023-03-01
PHP第三方登录—OAuth2.0协议
2023-03-01