三种读取配置文件的方式
在编写JDBC的util包以读取文件时,配置文件的位置会影响其读取方式。当前,默认配置文件直接放置在src文件夹下。
当读取.properties文件代码写法为:
Properties props = new Properties();
props.load(new FileInputStream("db.properties"));
系统出现报错找不到文件,说明是路径出现了问题,可以使用System.getProperty("user.dir")查看当前进程的目录。
System.getProperty("user.dir")
是Java中的一个方法调用,用于获取当前Java进程的启动目录。这个方法属于java.lang.System
类,它允许程序访问系统属性。
发现位置处于总目录下。于是继续将properties文件移到目录文件夹下运行,发现可以运行。
直接将配置文件放在总目录下,那么在编译过程中,这些配置文件通常不会被复制到out
文件夹。那么在后续的项目打包阶段,这些文件就不会被包含在最终的打包文件中。这会导致在部署和运行应用程序时,因为找不到配置文件而出现错误或异常!因此还是建议配置文件放在编译的字节码文件目录下。
既然如此就得改变文件的读取方式:通过字节码的路径寻找文件。
类名.class.getResourceAsStream()
类名.class.getResourceAsStream()
是一种用于从类路径中加载资源文件(如配置文件、图片、属性文件等)的方法。这个方法是Class
类的一部分,它允许你通过资源的相对路径或绝对路径来获取一个输入流(InputStream
),然后你可以读取这个输入流以访问资源文件的内容。该方法要求文件与类在同一个目录!!
将properties文件放在与类同一个文件夹下,代码为:
Properties props = new Properties();
props.load(utilTest.class.getResourceAsStream("db.properties"));
最终结果也能读取到文件,但是,配置文件与类放在同一个目录下的写法不太规范。
类名.class.getClassLoader()
类名.class.getClassLoader()
是一个用于获取某个类的类加载器的方法。类加载器是Java虚拟机的一部分,负责在运行时动态地将类文件(通常是
.class
文件)加载到JVM中,并将其转换为类对象,以便程序可以引用和使用这些类。类加载器是Java实现动态加载、链接和初始化类的一种机制。该方法要求配置文件在项目目录下!
最终代码为:
props.load(jdbcUtil.class.getClassLoader().getResourceAsStream("db.properties"));