mirror of
https://gitee.com/dromara/hutool.git
synced 2025-05-07 14:18:05 +08:00
normalize support samba path
This commit is contained in:
parent
a8e9de0ffb
commit
30d26ab22d
@ -11,6 +11,7 @@
|
|||||||
* 【core】 TimeInterval增加intervalPretty方法(issue#I12A6T@Gitee)
|
* 【core】 TimeInterval增加intervalPretty方法(issue#I12A6T@Gitee)
|
||||||
* 【core】 改进ArrayUtil.toString,提高性能
|
* 【core】 改进ArrayUtil.toString,提高性能
|
||||||
* 【system】 增加SystemPropsKeys(issue#550@Github)
|
* 【system】 增加SystemPropsKeys(issue#550@Github)
|
||||||
|
* 【core】 FileUtil.normalize在win下支持samba路径(issue#549@Github)
|
||||||
|
|
||||||
### Bug修复
|
### Bug修复
|
||||||
* 【core】 修复DateUtil.offset导致的时区错误问题(issue#I1294O@Gitee)
|
* 【core】 修复DateUtil.offset导致的时区错误问题(issue#I1294O@Gitee)
|
||||||
@ -18,6 +19,7 @@
|
|||||||
* 【db】 修复StatementUtil.getGeneratedKeys返回主键数量不足问题
|
* 【db】 修复StatementUtil.getGeneratedKeys返回主键数量不足问题
|
||||||
* 【db】 修复锁的问题(issue#546@Github)
|
* 【db】 修复锁的问题(issue#546@Github)
|
||||||
* 【db】 修复CombinationAnnotationElement问题(issue#547@Github)
|
* 【db】 修复CombinationAnnotationElement问题(issue#547@Github)
|
||||||
|
* 【core】 修复Validator.isGeneral问题
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -48,6 +48,7 @@ import cn.hutool.core.io.file.LineSeparator;
|
|||||||
import cn.hutool.core.io.file.Tailer;
|
import cn.hutool.core.io.file.Tailer;
|
||||||
import cn.hutool.core.io.resource.ResourceUtil;
|
import cn.hutool.core.io.resource.ResourceUtil;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
|
import cn.hutool.core.lang.Console;
|
||||||
import cn.hutool.core.util.ArrayUtil;
|
import cn.hutool.core.util.ArrayUtil;
|
||||||
import cn.hutool.core.util.CharUtil;
|
import cn.hutool.core.util.CharUtil;
|
||||||
import cn.hutool.core.util.CharsetUtil;
|
import cn.hutool.core.util.CharsetUtil;
|
||||||
@ -1576,15 +1577,20 @@ public class FileUtil {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 兼容Spring风格的ClassPath路径,去除前缀,不区分大小写
|
// 兼容Spring风格的ClassPath路径,去除前缀,不区分大小写
|
||||||
String pathToUse = StrUtil.removePrefixIgnoreCase(path, URLUtil.CLASSPATH_URL_PREFIX);
|
String pathToUse = StrUtil.removePrefixIgnoreCase(path, URLUtil.CLASSPATH_URL_PREFIX);
|
||||||
// 去除file:前缀
|
// 去除file:前缀
|
||||||
pathToUse = StrUtil.removePrefixIgnoreCase(pathToUse, URLUtil.FILE_URL_PREFIX);
|
pathToUse = StrUtil.removePrefixIgnoreCase(pathToUse, URLUtil.FILE_URL_PREFIX);
|
||||||
// 统一使用斜杠
|
// 统一使用斜杠
|
||||||
pathToUse = pathToUse.replaceAll("[/\\\\]{1,}", StrUtil.SLASH).trim();
|
pathToUse = pathToUse.replaceAll("[/\\\\]{1,}", StrUtil.SLASH).trim();
|
||||||
|
//兼容Windows下的共享目录路径(原始路径如果以\\开头,则保留这种路径)
|
||||||
|
if(path.startsWith("\\\\")){
|
||||||
|
pathToUse = "\\" + pathToUse;
|
||||||
|
}
|
||||||
|
|
||||||
int prefixIndex = pathToUse.indexOf(StrUtil.COLON);
|
|
||||||
String prefix = "";
|
String prefix = "";
|
||||||
|
int prefixIndex = pathToUse.indexOf(StrUtil.COLON);
|
||||||
if (prefixIndex > -1) {
|
if (prefixIndex > -1) {
|
||||||
// 可能Windows风格路径
|
// 可能Windows风格路径
|
||||||
prefix = pathToUse.substring(0, prefixIndex + 1);
|
prefix = pathToUse.substring(0, prefixIndex + 1);
|
||||||
|
@ -371,10 +371,10 @@ public class Validator {
|
|||||||
* @return 是否为给定长度范围的英文字母 、数字和下划线
|
* @return 是否为给定长度范围的英文字母 、数字和下划线
|
||||||
*/
|
*/
|
||||||
public static boolean isGeneral(CharSequence value, int min, int max) {
|
public static boolean isGeneral(CharSequence value, int min, int max) {
|
||||||
String reg = "^\\w{" + min + "," + max + "}$";
|
|
||||||
if (min < 0) {
|
if (min < 0) {
|
||||||
min = 0;
|
min = 0;
|
||||||
}
|
}
|
||||||
|
String reg = "^\\w{" + min + "," + max + "}$";
|
||||||
if (max <= 0) {
|
if (max <= 0) {
|
||||||
reg = "^\\w{" + min + ",}$";
|
reg = "^\\w{" + min + ",}$";
|
||||||
}
|
}
|
||||||
|
@ -136,6 +136,8 @@ public class FileUtilTest {
|
|||||||
Assert.assertEquals("bar", FileUtil.normalize("~/../bar"));
|
Assert.assertEquals("bar", FileUtil.normalize("~/../bar"));
|
||||||
Assert.assertEquals("bar", FileUtil.normalize("../../bar"));
|
Assert.assertEquals("bar", FileUtil.normalize("../../bar"));
|
||||||
Assert.assertEquals("C:/bar", FileUtil.normalize("/C:/bar"));
|
Assert.assertEquals("C:/bar", FileUtil.normalize("/C:/bar"));
|
||||||
|
|
||||||
|
Assert.assertEquals("\\/192.168.1.1/Share/", FileUtil.normalize("\\\\192.168.1.1\\Share\\"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -8,8 +8,8 @@ import cn.hutool.core.lang.Validator;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 验证器单元测试
|
* 验证器单元测试
|
||||||
* @author Looly
|
|
||||||
*
|
*
|
||||||
|
* @author Looly
|
||||||
*/
|
*/
|
||||||
public class ValidatorTest {
|
public class ValidatorTest {
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ public class ValidatorTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isBirthdayTest(){
|
public void isBirthdayTest() {
|
||||||
boolean b = Validator.isBirthday("20150101");
|
boolean b = Validator.isBirthday("20150101");
|
||||||
Assert.assertTrue(b);
|
Assert.assertTrue(b);
|
||||||
boolean b2 = Validator.isBirthday("2015-01-01");
|
boolean b2 = Validator.isBirthday("2015-01-01");
|
||||||
@ -71,13 +71,13 @@ public class ValidatorTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isCitizenIdTest(){
|
public void isCitizenIdTest() {
|
||||||
boolean b = Validator.isCitizenId("150218199012123389");
|
boolean b = Validator.isCitizenId("150218199012123389");
|
||||||
Assert.assertTrue(b);
|
Assert.assertTrue(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected=ValidateException.class)
|
@Test(expected = ValidateException.class)
|
||||||
public void validateTest() throws ValidateException{
|
public void validateTest() throws ValidateException {
|
||||||
Validator.validateChinese("我是一段zhongwen", "内容中包含非中文");
|
Validator.validateChinese("我是一段zhongwen", "内容中包含非中文");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,4 +116,20 @@ public class ValidatorTest {
|
|||||||
url = "https://aaa-bbb.somthing.com:8080/a.php?a=b&c=2";
|
url = "https://aaa-bbb.somthing.com:8080/a.php?a=b&c=2";
|
||||||
Assert.assertTrue(Validator.isMactchRegex(PatternPool.URL_HTTP, url));
|
Assert.assertTrue(Validator.isMactchRegex(PatternPool.URL_HTTP, url));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isGeneralTest() {
|
||||||
|
String str = "";
|
||||||
|
boolean general = Validator.isGeneral(str, -1, 5);
|
||||||
|
Assert.assertTrue(general);
|
||||||
|
|
||||||
|
str = "123_abc_ccc";
|
||||||
|
general = Validator.isGeneral(str, -1, 100);
|
||||||
|
Assert.assertTrue(general);
|
||||||
|
|
||||||
|
// 不允许中文
|
||||||
|
str = "123_abc_ccc中文";
|
||||||
|
general = Validator.isGeneral(str, -1, 100);
|
||||||
|
Assert.assertFalse(general);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user