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();