add methods

This commit is contained in:
Looly 2021-08-26 11:58:02 +08:00
parent b88de146f6
commit d0aff3e3cd
3 changed files with 49 additions and 3 deletions

View File

@ -22,6 +22,7 @@
* 【core 】 添加NullComparator、FuncComparatorissue#I471X7@Gitee
* 【core 】 LambdaUtil添加getFieldNameissue#I4750U@Gitee
* 【cron 】 Scheduler增加setThreadExecutorissue#I47A6N@Gitee
* 【core 】 CharsetDetector增加detect重载支持自定义缓存大小issue#I478E5@Gitee
### 🐞Bug修复
* 【core 】 修复MapUtil.sort比较器不一致返回原map的问题issue#I46AQJ@Gitee

View File

@ -42,7 +42,7 @@ public class CharsetDetector {
/**
* 探测文件编码
*
* @param file 文件
* @param file 文件
* @param charsets 需要测试用的编码null或空使用默认的编码数组
* @return 编码
* @since 5.6.7
@ -60,11 +60,25 @@ public class CharsetDetector {
* @return 编码
*/
public static Charset detect(InputStream in, Charset... charsets) {
return detect(IoUtil.DEFAULT_BUFFER_SIZE, in, charsets);
}
/**
* 探测编码<br>
* 注意此方法会读取流的一部分然后关闭流如重复使用流请使用使用支持reset方法的流
*
* @param bufferSize 自定义缓存大小即每次检查的长度
* @param in 使用后关闭此流
* @param charsets 需要测试用的编码null或空使用默认的编码数组
* @return 编码
* @since 5.7.10
*/
public static Charset detect(int bufferSize, InputStream in, Charset... charsets) {
if (ArrayUtil.isEmpty(charsets)) {
charsets = DEFAULT_CHARSETS;
}
final byte[] buffer = new byte[512];
final byte[] buffer = new byte[bufferSize];
try {
while (in.read(buffer) > -1) {
for (Charset charset : charsets) {

View File

@ -1,8 +1,10 @@
package cn.hutool.core.util;
import cn.hutool.core.io.CharsetDetector;
import cn.hutool.core.io.FileUtil;
import java.io.File;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.charset.UnsupportedCharsetException;
@ -65,7 +67,7 @@ public class CharsetUtil {
/**
* 解析字符串编码为Charset对象解析失败返回系统默认编码
*
* @param charsetName 字符集为空则返回默认字符集
* @param charsetName 字符集为空则返回默认字符集
* @return Charset
* @since 5.2.6
*/
@ -192,4 +194,33 @@ public class CharsetUtil {
public static Charset defaultCharset() {
return Charset.defaultCharset();
}
/**
* 探测编码<br>
* 注意此方法会读取流的一部分然后关闭流如重复使用流请使用使用支持reset方法的流
*
* @param in 使用后关闭此流
* @param charsets 需要测试用的编码null或空使用默认的编码数组
* @return 编码
* @see CharsetDetector#detect(InputStream, Charset...)
* @since 5.7.10
*/
public static Charset defaultCharset(InputStream in, Charset... charsets) {
return CharsetDetector.detect(in, charsets);
}
/**
* 探测编码<br>
* 注意此方法会读取流的一部分然后关闭流如重复使用流请使用使用支持reset方法的流
*
* @param bufferSize 自定义缓存大小即每次检查的长度
* @param in 使用后关闭此流
* @param charsets 需要测试用的编码null或空使用默认的编码数组
* @return 编码
* @see CharsetDetector#detect(int, InputStream, Charset...)
* @since 5.7.10
*/
public static Charset defaultCharset(int bufferSize, InputStream in, Charset... charsets) {
return CharsetDetector.detect(bufferSize, in, charsets);
}
}