properties配置文件读取失败问题

这是一篇关于java中使用FileReader读取properties配置文件读取失败问题的解决方法

Error:Exception in thread "main" java.io.FileNotFoundException: web.properties (No such file or directory)

image-20240512185147347

读取方式:

1
2
3
4
5
6
7
//读取配置文件
FileReader fileReader = new FileReader("web.properties");
Properties prop = new Properties();
prop.load(fileReader);
System.out.println(prop);
//关闭
fileReader.close();

image-20240512185016521

结果出现找不到文件错误

Exception in thread "main" java.io.FileNotFoundException: web.properties (No such file or directory)

image-20240512185147347

问题解决:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Properties pro = new Properties();        
{//此方式要求 配置文件在 src 文件夹 内

//类名.class.getClassLoader().getResourceAsStream("文件名")
InputStream inStream = DatabaseConfig.class.getClassLoader().getResourceAsStream("database.properties");
pro.load(inStream);
inStream.close();
}

{//此方式要求 文件名 要和 src 平级,不是在src目录之下(建议此种方式建立配置文件)

FileReader reader = new FileReader("database.properties");
pro.load(reader);
reader.close();
}

项目结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
servlet_simulate
├── servlet_simulate.iml
└── src
├── com
│   ├── apache
│   │   └── Tomcat.java
│   ├── ethan
│   │   ├── BankServlet.java
│   │   ├── UserListServlet.java
│   │   └── UserLoginServlet.java
│   └── sun
│   └── Servlet.java
└── web.properties

由于我的配置文件在src下,所以移动到项目文件下就行了

但是,我使用的MacOS系统,还需要把项目跟添加上,不添加的话还是报同样的错误:

1
FileReader fileReader = new FileReader("servlet_simulate/web.properties");

这里需要注意的是,properties 文件的路径问题,两种方式要求的文件路径是不一样的,防止操作文件时会出现 FileNotFoundException 的情况。