我们在一个驱动器上有一个文件(C:\ megzs \ realm.properties)。我们想加载这个文件,并使用Spring中提供的ClassPathResource读取内容。但我们看到文件未找到异常。我们正在尝试的代码是
Resource resource = new ClassPathResource("file:c:/megzs/realm.properties");
Properties prop = PropertiesLoaderUtils.loadProperties(resource);
这里我们使用ClassPathResource来加载外部文件。 ClassPathResource可以加载外部文件吗?
我们如何加载多个属性文件(一个来自类路径,另一个来自绝对路径)??
答案 0 :(得分:3)
如果要访问基于文件的资源,请使用FileSystemResource并将其提供给PropertiesLoaderUtils.loadProperties()方法。下面的代码从文件系统读取属性文件,如果不存在,它将从类路径加载它。希望它有所帮助。
public static Properties getProperties(String propertyFile) {
try {
Resource resource = new FileSystemResource(propertyFile);
if (!resource.exists()) {
resource = new ClassPathResource(propertyFile);
}
return PropertiesLoaderUtils.loadProperties(resource);
} catch (Exception ignored) {
return null;
}
}
答案 1 :(得分:0)
使用@PropertySource()
加载许多属性
将使用properties
对象读取Environment
可能你应该尝试这种方法,你的方法不是
错了,这对我来说有点混乱
@Configuration
@PropertySource({
"classpath:config.properties",
"file:/path/to/application.properties" //if same key, this will 'win'
})
public class AppConfig {
@Autowired
Environment env;
public void ReadProperties() {
String property1 = env.getProperty("property");
String property2 = env.getProperty("property2");
}
//if theres same key found in the second property
//file key in the second property file wiil be read
}
答案 2 :(得分:-2)
在下面的代码段中,screen-shots
是src/test/resources
下的文件夹,而Test类是src/test/java
下的
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
Resource fileResource = new ClassPathResource(
"screen-shots/HomePage-attachment.png");
assertNotNull(fileResource);