public static void loadFilters() throws MalformedURLException {
File filtersFile = new File(CONFIG_DIR + "/" + FILTERS_FILE);
URL[] urls = {filtersFile.toURI().toURL()};
ClassLoader loader = new URLClassLoader(urls);
ResourceBundle bundle = ResourceBundle.getBundle(FILTERS_BASE, Locale.getDefault(), loader);
if (StringUtils.isNotBlank(getStringValue(bundle, ALLOW_TYPE_PATTERN_KEY))) {
ALLOWED_TYPES = Pattern.compile(getStringValue(bundle, ALLOW_TYPE_PATTERN_KEY));
}
if (StringUtils.isNotBlank(getStringValue(bundle, DENY_TYPE_PATTERN_KEY))) {
DENIED_TYPES = Pattern.compile(getStringValue(bundle, DENY_TYPE_PATTERN_KEY));
}
ALLOWED_MIME_TYPES = getListValue(bundle, ALLOW_MIME_PATTERN_KEY);
DENIED_MIME_TYPES = getListValue(bundle, DENY_MIME_PATTERN_KEY);
}
我想加載屬性文件,使用保存在單獨目錄中的代碼之外的資源包。但是,當我嘗試做這樣(上面的代碼)我得到錯誤的無法使用ResourceBundle從文件系統加載文件
ERROR [main] Can't find bundle for base name filters, locale en_US
而且如果我保持這個文件filters.properties中的src/main /資源文件夾,然後這個代碼是工作的罰款...但是當我將它保留在外面時,它不起作用..不知道爲什麼..不知道爲什麼..
而CONFIG_DIR包含\ my \ dir \ conf並且FILTERS_FILE包含filters.properties文件。
FILTERS_FILE具有價值filters.properties
和FILTERS_BASE具有價值filters
和網址獲得了價值[file:/C:/my/dir/conf/filters.properties]
而且filters.properties文件是/my/dir/conf/filters.properties
「FILTERS_FILE」和「FILTERS_BASE」的值是什麼?前者是指向一個目錄還是一個文件? 'URLClassLoader'假設URL指向一個目錄,如果以'/'結尾,否則它假定你指向一個jar文件。 –
@G_H,我已經更新了問題..和FILTERS_FILE具有值filters.properties和FILTERS_BASE具有值過濾器和URL獲得值爲[文件:/ C:/my/dir/conf/filters.properties] – ferhan