Java中配置文件放在哪里

Java中配置文件放在哪里

标签(空格分隔): Java


  Java中路径可分为相对路径和绝对路径两种方式。
  相对路径是相对当前工作目录,例如当使用命令C:\Users\Asus>java MyClass xxx.properties,要求在C:\Users\Asus目录下有xxx.properties文件,而在使用C:\>java MyClass xxx.properties时则要求在C盘根目录下有xxx.properties文件,所以使用相对路径是飘忽不定的,不建议使用。
  但如果给出绝对路径,D:\xxx.properties,当工程给用户时,若用户没有D盘,就会出现问题。
  综上所述,仍旧采用绝对路径的方式来确定资源文件的地址,但是需要通过函数方法得到项目路径,在通过字符串连接的方式拼接得到绝对路径。

//此时config.properties文件放在工程文件根目录下,即选择工程右键后,新建config.properties文件
InputStream ips = new FileInputStream("config.properties");
Properties properties = new Properties();
properties.load(ips);
System.out.println(properties.getProperty("name"));  

Java中比较常用的加载资源的方式

  类加载器把字节码加载到内存中,即它可以加载.class文件,也可以加载普通文件。
  当工程完成后,不会将工程目录下中的Src目录给用户(怎么可能会把源代码给用户),而是将bin目录下的文件,一些字节码等文件在用户电脑上运行。
  eclipse会自动将Java文件编译,并存放字节码在 工程目录/bin/包名目录下,Java文件对应编译后的字节码,普通文件(如config.properties文件)仍原封不动拷贝过去。
  类加载器会在classPath中搜索。

public class ReflectTest {
    public static void main(String[] args) throws Exception{
        /*InputStream ips = new FileInputStream("config.properties");
        Properties properties = new Properties();
        properties.load(ips);
        System.out.println(properties.getProperty("name"));   */ 
        InputStream ipsInputStream = ReflectTest.class.getClassLoader().getResourceAsStream("com/qianming/config.properties");

        //在class类中直接有一个getResourceAsStream方法,路径名相对当前包名的相对路径,所以这里可以直接写config.properties
        //InputStream ipsInputStream = ReflectTest.class.getResourceAsStream("config.properties");
        //如果路径中写上'/',则此时需相对根目录写路径
        //InputStream ipsInputStream = ReflectTest.class.getResourceAsStream("/com/qianming/config.properties");

        Properties properties = new Properties();
        properties.load(ipsInputStream);
        System.out.println(properties.getProperty("name"));
    }
}

注意:这里使用的路径是com/qianming/config.properties,即在包/资源文件的形式不能在com前加 “/”,记忆就行,否则会报错。

你可能感兴趣的:(Java)