在Java中将资源文件夹目录从目标类更改为源

时间:2018-07-20 11:00:12

标签: java file properties-file

我正在尝试从Java Web应用程序中的src/main/resources中读取属性文件。 问题是当我尝试使用以下代码加载文件

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource(fileName).getFile());

它试图获取异常的文件形式目标类

  

java.io.FileNotFoundException:   C:\ Users \ PL90169 \ Java%20Projects \ MKPFileUploadService \ target \ classes \ config.properties”。

如何将文件读取目录从目标更改为源文件夹而不是目标。 附加的项目结构here

2 个答案:

答案 0 :(得分:0)

我建议您构建一个实用程序类,以便可以轻松加载所需的所有属性,例如:

public static String getPropertyValue(String property) throws IOException {

    Properties prop = new Properties();
    String propFileName = "config.properties";
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    InputStream inputStream = classLoader.getResourceAsStream(propFileName);

    if (inputStream != null) {
        prop.load(inputStream);
    } else {
        throw new FileNotFoundException("property file '" + propFileName + "' not found in the classpath");
    }

    return prop.getProperty(property);
}

因此,如果在您的config.properties文件中输入

exampleValue=hello

致电getPropertyValue("exampleValue")会得到hello

答案 1 :(得分:0)

也许你想要这个:

InputStream inputStream = getClass().getResourceAsStream("/config.properties");

ByteArrayOutputStream bOut = new ByteArrayOutputStream();
byte[] buffer = new byte[4 * 1024];
while (true) {
  int readCount = inputStream.read(buffer);
  if (readCount < 0) break;
  bOut.write(buffer, 0, readCount);
}

String configContent = bOut.toString("UTF-8");