目录

  • 1. 获取本地文件的Mimetype
  • 2. 获取超大图片的尺寸
  • 3. 使用itextpdf获取pdf文件的尺寸
  • 4. 原生代码复制文件
  • 5.单例模式在单例类中加入下面的方法可以防止反序列化漏洞
  • 6.解决跨域问题原生代码
  • 7.获取当前ISODATETIME格式的时间字符串
  • 8.字符串脱敏
  • 9.判断脱敏字符串是否与明文匹配
  • 10.从给定的Class类获取JAR文件的完整路径
  • 11.获取项目里的资源输入流

1. 获取本地文件的Mimetype

import java.net.URLConnection;String contentType = URLConnection.getFileNameMap().getContentTypeFor(filePath);

2. 获取超大图片的尺寸

import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.FileImageInputStream;try (FileImageInputStream inputStream = new FileImageInputStream(new File(imageFilePath));) {Iterator<ImageReader> readers = ImageIO.getImageReaders(inputStream);if (readers.hasNext()) {ImageReader reader = readers.next();reader.setInput(inputStream);int width = reader.getWidth(reader.getMinIndex(); //图片宽度int height = reader.getHeight(reader.getMinIndex()); //图片高度}inputStream.flush();
} catch (Exception e) {log.error("读取图片时异常", e);
}

3. 使用itextpdf获取pdf文件的尺寸

import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfReader;PdfReader pdfReader = null;
try {pdfReader = new PdfReader(pdfPath);Rectangle pageSize = pdfReader.getPageSize(1); 1表示首页int width = pageSize.getWidth(); //宽高int height = pageSize.getHeight(); //高度
} catch (Exception e) {log.error("读取pdf时异常", e);
} finally {if (pdfReader != null) {pdfReader.close();}
}

4. 原生代码复制文件

import java.io.File;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
//StandardCopyOption.REPLACE_EXISTING覆盖已存在的文件
Files.copy(new File(videoFormat.getParent(), videoFormat.getName()).toPath(), new File(outFilePath).toPath(), StandardCopyOption.REPLACE_EXISTING);

5.单例模式在单例类中加入下面的方法可以防止反序列化漏洞

//反序列化时,如果定义了readResolve(),则直接返回此方法指定的对象,而不再单独创建新对象。
private Object readResolve() throws ObjectStreamException {return instance;
}

6.解决跨域问题原生代码

public static void originEnable(HttpServletRequest request, HttpServletResponse response) {String origin = request.getHeader("Origin");if (origin != null && !origin.equals("")) {//带cookie的时候,origin必须是全匹配,不能使用*response.addHeader("Access-Control-Allow-Origin", origin);}//允许提交请求的方法,*表示全部允许//GET, POST, PUT, DELETE, PATCH...response.addHeader("Access-Control-Allow-Methods", "*");//支持所有自定义头if (headers != null && !headers.equals("")) {//Content-Type, x-requested-with, X-Custom-Header, Custom-Access-Token...response.addHeader("Access-Control-Allow-Headers", headers);}//预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检response.addHeader("Access-Control-Max-Age", "3600");
}

7.获取当前ISODATETIME格式的时间字符串

//yyyy-MM-ddTHH:mm:ss
DateTimeFormatter formatter = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').appendPattern("HH:mm:ss").toFormatter();String isoDateTime = LocalDateTime.now(ZoneId.of("+8")).format(formatter);System.out.println(isoDateTime);

8.字符串脱敏

/*** @param source 源字符串* @param start 脱敏开始位置(包含)允许负数,负数即为从右边数* @param end 脱敏结束位置(不包含)允许负数,负数即为从右边数* @return 脱敏后的字符串*/
public static String desense(String source, int start, int end) {if (source == null || "".equals(source)) {return source;}int length = source.length();if (start < 0) {start += length;}if (start < 0) {start = 0;}if (end < 0) {end += length + 1;}if (end < 0) {end = length;}if (start - length > 0) {start = length;}if (end - length > 0) {end = length;}if (start > end) {int t = start;start = end;end = t;}if (start == end) {return source;}String pre = source.substring(0, start);String suff = source.substring(end);StringBuilder stars = new StringBuilder();for (int i = 0; i < end - start; i++) {stars.append("*");}return pre + stars.toString() + suff;
}

9.判断脱敏字符串是否与明文匹配

/*** 判断脱敏字符串是否与明文匹配* @param naked 明文字符串* @param occlude 脱敏字符串, *表示0个或多个字符* @return true,匹配;false,不匹配*/public static boolean like(String naked, String occlude) {if (StringUtils.isEmpty(naked) || StringUtils.isEmpty(occlude)) {return false;}if (!occlude.contains("*")) {return naked.equals(occlude);}//occludeArr.length至少为2String[] occludeArr = occlude.split("\\*+", -1);String start = occludeArr[0];if (StringUtils.isNotEmpty(start)) {int index = naked.indexOf(start);if (index != 0) {return false;}naked = naked.substring(start.length());}String end = occludeArr[occludeArr.length - 1];if (StringUtils.isNotEmpty(end)) {int lastIndex = naked.lastIndexOf(end);if (naked.length() - lastIndex - end.length() != 0) {return false;}naked = naked.substring(0, lastIndex);}if (occludeArr.length < 3) {//无中间段,返回truereturn true;}for (int i = 1, int loop = occludeArr.length - 1; i < loop; i++) {String middle = occludeArr[i];if (StringUtils.isEmpty(middle)) {continue;}if (naked.isEmpty()) {return false;}int index = naked.indexOf(middle);if (index < 0) {return false;}naked = naked.substring(index + middle.length());}return true;
}

10.从给定的Class类获取JAR文件的完整路径

/*** 从给定的Class类获取JAR文件的完整路径* @param clazz 类实例* @return jar包在本机的绝对路径*/
public static String getJarFilePath(Class<?> clazz) {try {return getProtectionDomain(clazz);} catch (Exception e) {}return getResource(clazz);
}private static String getProtectionDomain(Class<?> clazz) throws URISyntaxException {URL url = clazz.getProtectionDomain().getCodeSource().getLocation();return Paths.get(url.toURI()).toString();
}private static String getResource(Class<?> clazz) {URL resource = clazz.getResource(clazz.getSimpleName() + ".class");if (resource == null) {throw new RuntimeException("class resource is null");}String url = resource.toString();System.out.println(url);if (url.startsWith("jar:file:")) {String path = url.replaceAll("^jar:(file:.*[.]jar)!/.*", "$1");try {return Paths.get(new URL(path).toURI()).toString();} catch (Exception e) {throw new RuntimeException("Invalid Jar File URL String");}}throw new RuntimeException("Invalid Jar File URL String");
}

11.获取项目里的资源输入流

支持本地项目、war包、jar包

public class JarUtils {/*** 获取项目里的资源输入流* @param sourcePath 项目编译后classes目录下的文件路径, 如application.properties、com/xxx/util/JarUtils.class* @return null 如果未找到文件*/public static InputStream getResourceAsStream(String sourcePath) {return JarUtils.class.getClassLoader().getResourceAsStream(sourcePath);}
}

java冷门小功能代码收集相关推荐

  1. java poi 常用功能代码

    java poi 常用功能代码(适用于XSSFWorkbook:Excel2007后的版本,扩展名是.xlsx) Excel验证公式 =AND(H8>0,OR(H8=INT(H8),LEN(H8 ...

  2. java个人小管家代码_Java程序设计基础—Java小管家系统构建

    课题一 Java桌面小管家项目分析 任务1 Java桌面小管家项目分析 课题二 了解Java语言 任务2 编写第一个Java程序 课题三 面向对象程序设计思想 任务3 为小管家设计类 任务4 实现小管 ...

  3. java个人小管家代码,基于jsp的个人生活小管家系统-JavaEE实现个人生活小管家系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的个人生活小管家系统, 该项目可用各类java课程设计大作业中, 个人生活小管家系统的系统架构分为前后台两部分, 最 ...

  4. Java实现分页功能 代码很粗糙,都是根据自己所需去定义逻辑功能的。

    1.首先定义了一个PageUtil的类,看了网上的很多教程,貌似都有一个这样的类,自己也定义了一个.在代码编写过程中发现这个类其实也没有那么大的作用,但是不去定义这个类,感觉好像缺少什么似得.(请高手 ...

  5. java个人小管家代码_java毕业设计_springboot框架的家庭小管家系统

    这是一个基于java的毕业设计项目,毕设课题为springboot框架的家庭小管家系统, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp+spr ...

  6. java程序计时器_求完整简单java计时器小程序代码,急!!

    放肆丶小侽人 回答时间:2019-12-05 向TA提问 import java.awt.Button; import java.awt.Color; import java.awt.FlowLayo ...

  7. Java斗地主小游戏代码

    package com.map; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; ...

  8. java答题小程序代码_学习java第四天写的小程序

    代码如下: /** *作用:制作一个石头剪刀布的游戏 *作者:李林雄 */ import java.util.Scanner; public class Test6Game{ public stati ...

  9. Java冷门小技巧:如何使用Steam.map()转换流?

    map()方法是一个中间操作.它返回一个流,该流包括将给定函数应用于流中每个元素的结果. 以下代码返回一个整数流,这是应用String.length()方法的结果. import java.util. ...

  10. java简单功能测试,java 自动化测试小功能集锦

    1.  java 调用执行shell 命令 package com.mkyong.shell; import java.io.BufferedReader; import java.io.InputS ...

最新文章

  1. android activity动态显示不出来,uiautomatorviewer 获取不到动态页面解决办法
  2. Oracle实例之间的心跳机制,为何而心跳-Oracle Heartbeat研究之二
  3. 关于ibatis.net框架(NPetshop学习)
  4. 系统如何实现权限控制
  5. 基于小米4C路由器无障碍搭建机器人嵌入式环境(2021.08.17)
  6. 超详解代理服务器的使用方法
  7. 力天创见人脸识别分析客流量
  8. 密度聚类DBSCAN的matlab代码
  9. 深入浅出理解输入输出阻抗-音频电路输入输出阻抗
  10. 【帧率倍频】基于FPGA的视频帧率倍频系统verilog开发实现
  11. 如何在Ubuntu系统下挂载新硬盘(win10+Ubuntu双系统单硬盘挂载新硬盘)
  12. 采用拉丁超立方采样的电力系统概率潮流计算 拉丁超立方采样属于分层采样,是一种有效的用采样值反映随机变量的整体分布的方法
  13. unable to access ‘https://code.srdcloud.cn/a/ifst/ifst-fe/‘: Failed to connect to code.srdcloud.c
  14. 通过Hyper-V的方式快速安装Linux虚拟机
  15. signature=1e627a907c86a2ecea855afa2fce9a87,熟练掌握 openssl 证书命令说明
  16. unity游戏中提示信息如何实现_RPG游戏中的剧情在Unity3D中如何实现呢?
  17. 深度学习笔记(18)- 深度终端之一
  18. php doc转swf,centos安装openoffice将doc、ppt、txt、xls等转换成pdf,再转换成swf用‍FlexPaper显示...
  19. 获利 40+万,工地技术员自学开发外挂被抓
  20. 电商项目秒杀思路和认识

热门文章

  1. np.roll的用法
  2. bootdo mysql_iBootDo: 基于BootDo项目定制版,兼容MySQL、Oracle
  3. 计算机软件质量保证计划示例
  4. Python教学视频(基础班+就业班)
  5. 自己写的BMFont导入工具,快速把图片转换为美术字体
  6. easyui框架中动态改变表头
  7. 合肥工业大学机器人技术期末_机器人技术基础期末考试复习资料
  8. 6U VPX 超高速信号采集处理板(XC7K325T + 4 片DSP TMS320C6678)
  9. 网易云音乐服务器code521,宝塔面板部署网易云音乐无版权服务器
  10. mysql 2000安装教程_Win10 64位安装个人版SQL2000图文教程