From 326dd4434d43458895041b1c97ab7e0046b41122 Mon Sep 17 00:00:00 2001 From: "Lin.Liang" <546648227@qq.com> Date: Wed, 10 Jul 2019 19:21:13 +0800 Subject: [PATCH] Fix the compatibility problem of ConfigUtil for Windows environment (#903) --- .../com/alibaba/csp/sentinel/util/ConfigUtil.java | 12 +++++++++++- .../alibaba/csp/sentinel/util/ConfigUtilTest.java | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/util/ConfigUtil.java b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/util/ConfigUtil.java index bcf98b24..80d7a94d 100644 --- a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/util/ConfigUtil.java +++ b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/util/ConfigUtil.java @@ -45,7 +45,7 @@ public final class ConfigUtil { */ public static Properties loadProperties(String fileName) { if (StringUtil.isNotBlank(fileName)) { - if (fileName.startsWith(File.separator)) { + if (absolutePathStart(fileName)) { return loadPropertiesFromAbsoluteFile(fileName); } else if (fileName.startsWith(CLASSPATH_FILE_FLAG)) { return loadPropertiesFromClasspathFile(fileName); @@ -76,6 +76,16 @@ public final class ConfigUtil { return properties; } + private static boolean absolutePathStart(String path) { + File[] files = File.listRoots(); + for (File file : files) { + if (path.startsWith(file.getPath())) { + return true; + } + } + return false; + } + private static Properties loadPropertiesFromClasspathFile(String fileName) { fileName = fileName.substring(CLASSPATH_FILE_FLAG.length()).trim(); diff --git a/sentinel-core/src/test/java/com/alibaba/csp/sentinel/util/ConfigUtilTest.java b/sentinel-core/src/test/java/com/alibaba/csp/sentinel/util/ConfigUtilTest.java index 69ddd2de..65a24e20 100644 --- a/sentinel-core/src/test/java/com/alibaba/csp/sentinel/util/ConfigUtilTest.java +++ b/sentinel-core/src/test/java/com/alibaba/csp/sentinel/util/ConfigUtilTest.java @@ -49,7 +49,7 @@ public class ConfigUtilTest { } BufferedWriter out = new BufferedWriter(new FileWriter(file)); out.write(LOG_OUTPUT_TYPE + "=" + logOutputType); - out.write("\n"); + out.write(System.getProperty("line.separator")); out.write(LOG_DIR + "=" + dir); out.flush(); out.close();