从01开始 从01开始
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)

peterjxl

人生如逆旅,我亦是行人
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)
  • JavaSE

    • 我的Java学习路线
    • 安装Java
    • Java数据类型

    • Java多版本配置
    • 面向对象

    • Java核心类

    • IO

      • IO介绍
      • File对象介绍
      • InputStream
      • OutputStream
      • Decorator模式
      • 读写zip文件
      • Properties类
      • 读取classpath中的配置文件
        • 配置文件固定路径的问题
        • classpath中的配置文件
      • 序列化与反序列化
      • Reader
      • Writer
      • PrintStream和PrintWriter
      • Scanner
      • 使用Files
      • Console
      • IO系列小结
    • Java与时间

    • 异常处理

    • 哈希和加密算法

    • Java8新特性

    • 网络编程

    • Java
  • JavaSenior

  • JavaEE

  • JavaWeb

  • Spring

  • 主流框架

  • SpringMVC

  • SpringBoot

  • Java并发

  • Java源码

  • JVM

  • 韩顺平

  • Java
  • Java
  • JavaSE
  • IO
2023-02-02
目录

读取classpath中的配置文件

# 09.读取classpath中的配置文件

一个Java程序在启动的时候,总是需要读取配置文件。

‍

# 配置文件固定路径的问题

为了表明配置文件在哪里,我们需要给定路径,例如:

String conf = "C:\\conf\\default.properties";
1

如果在C:\conf​目录下没有这个文件,就会报错,因为这是固定在代码里的;如果将配置文件挪个地方,甚至换到Linux系统下,又要改动代码并重新编译。

因此,从磁盘的固定目录读取配置文件,不是一个好的办法。那么应该怎么做呢?

我们可以将配置文件放到编译后的.class文件所在的目录里(或者放到jar包),并且在classpath里指定配置文件的路径,从而避免不同环境下文件路径不一致的问题

‍

# classpath中的配置文件

在classpath中的资源文件,路径总是以/​开头,我们先获取当前的Class​对象,然后调用getResourceAsStream()​就可以直接从classpath读取任意的资源文件。

我们新建一个conf目录,里面创建一个default.properties​文件:

last_open_file=/fuk
1

‍

然后编写代码读取:

import java.io.InputStream;
import java.util.Properties;

public class IODemo9ClassPath {
  public static void main(String[] args) {
    try (InputStream input = IODemo9ClassPath.class.getResourceAsStream("/default.properties")) {
      Properties props = new Properties();
      props.load(input);

      String last_open_file = props.getProperty("last_open_file");
      System.out.println("last_open_file: " + last_open_file);


    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

注意:如果资源文件不存在,它将返回null​。因此代码里应增加判空的语句

‍

‍

最后编译和运行:

$ javac -d conf IODemo9ClassPath.java
$ cd conf
$ java IODemo9ClassPath
last_open_file: /fuk
1
2
3
4

‍

‍

‍

‍

在GitHub上编辑此页 (opens new window)
上次更新: 2023/2/12 10:44:51
Properties类
序列化与反序列化

← Properties类 序列化与反序列化→

Theme by Vdoing | Copyright © 2022-2023 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式