从 config.file 读取会抛出 FileNotFoundException(没有这样的文件或目录)
Reading from config.file throws FileNotFoundException (no such file or directory)
这是我的项目结构
- src
-- java
--- utils
---- ConfigFileReader
--- resources
---- config.properties
这是 ConfigFileReader class:
public class ConfigFileReader {
public static String getProperty(String key) {
Properties properties = new Properties();
try {
InputStream inputStream = new FileInputStream("/config.properties");
properties.load(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
return properties.getProperty(key);
}
}
这是我的 config.properties 文件:
account_storage_technology=cognito
不幸的是执行该方法抛出
java.io.FileNotFoundException: /config.properties (No such file or directory)
- 我该如何解决?
您需要将 resources
文件夹保持在与 src
相同的级别。像这样:
- src
- java
- utils
- ConfigFileReader
- resources
- config.properties
并修改路径如下:
InputStream inputStream = new FileInputStream("resources/config.properties");
UPDATE :将属性文件保存在包中并从那里读取它是不可取的,也不是一个好主意。但是,您可以通过显示绝对完整路径让您的代码读取文件。
示例:
InputStream inputStream = new FileInputStream("C:\Project-Path\Project-Name\src\java\resources\config.properties");
// Project-Path : This is the path where your Project Parent folder resides.
// Project-Name : This is the name of your project.
当您在开头执行“/”时,它会尝试从您的根目录读取。删除 /,只要 config.properties 存在于 src/main/resources 中,FileInputStream 就应该能够选择配置文件。
ConfigFileReader.class.getResourceAsStream("config.properties")
这是我的项目结构
- src
-- java
--- utils
---- ConfigFileReader
--- resources
---- config.properties
这是 ConfigFileReader class:
public class ConfigFileReader {
public static String getProperty(String key) {
Properties properties = new Properties();
try {
InputStream inputStream = new FileInputStream("/config.properties");
properties.load(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
return properties.getProperty(key);
}
}
这是我的 config.properties 文件:
account_storage_technology=cognito
不幸的是执行该方法抛出
java.io.FileNotFoundException: /config.properties (No such file or directory)
- 我该如何解决?
您需要将 resources
文件夹保持在与 src
相同的级别。像这样:
- src
- java
- utils
- ConfigFileReader
- resources
- config.properties
并修改路径如下:
InputStream inputStream = new FileInputStream("resources/config.properties");
UPDATE :将属性文件保存在包中并从那里读取它是不可取的,也不是一个好主意。但是,您可以通过显示绝对完整路径让您的代码读取文件。
示例:
InputStream inputStream = new FileInputStream("C:\Project-Path\Project-Name\src\java\resources\config.properties");
// Project-Path : This is the path where your Project Parent folder resides.
// Project-Name : This is the name of your project.
当您在开头执行“/”时,它会尝试从您的根目录读取。删除 /,只要 config.properties 存在于 src/main/resources 中,FileInputStream 就应该能够选择配置文件。
ConfigFileReader.class.getResourceAsStream("config.properties")