Java获取配置文件跟路径

一直以为使用new File(相对路径)可以读取class目录下的文件,其实不然。网上查询了一些资料,弄清楚了原理,总结如下:

package com.coshaho.learn;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class FilePathLearn
{
    public static void main(String[] args) throws IOException
    {
        // 方案1
        // 获取代码工程路径,生产环境上只有class文件,没有java文件与代码工程,这种方式不可取
        File file = new File("");
        System.out.println(file.getCanonicalPath());

        // 方案2
        // 获取代码工程路径,生产环境上使用会出现问题
        System.out.println(System.getProperty("user.dir")); 

        // 方案3
        // 获取class文件根目录(路径中包含空格会被转义为%20,此时new File会失败)
        file = new File(FilePathLearn.class.getResource("/").getPath());
        System.out.println(file.getCanonicalPath());

        // 方案4
        // 获取class文件目录(路径中包含空格会被转义为%20,此时new File会失败)
        file = new File(FilePathLearn.class.getResource("").getPath());
        System.out.println(file.getCanonicalPath());

        // 方案5
        // 可以看出来,这种方法的效果和方案3效果相同
        file = new File(FilePathLearn.class.getClassLoader().getResource("").getPath());
        System.out.println(file.getCanonicalFile()); 

        // 由于路径可能包含空格,new file可能失败,所以可以直接打开流读取文件
        InputStream stream = FilePathLearn.class.getResource("CE_Excel.xml").openStream();
        InputStreamReader reader = new InputStreamReader(stream);
        BufferedReader bufReader=new BufferedReader(reader); 

        String str = null;
        while ((str = bufReader.readLine()) != null)
        {
            System.out.println(str);
        }
    }
}
时间: 2024-10-12 02:43:34

Java获取配置文件跟路径的相关文章

项目打jar包后无法获取配置文件的路径问题

项目打jar包后无法获取配置文件的路径问题 今天在开发中做一个java项目,要求读取配置文件中的信息,当项目打jar包以后就找不到配置文件了,问题最后解决了,拿出来跟大家分享一下. 方式一:getResource(这种方式在war包好用,在jar包不好用): public static void main(String[] args) { String path=App.class.getClassLoader().getResource("config.properties").ge

jsp和java获取文件或路径

1.如何获得当前文件路径常用:(1).Test.class.getResource("")得到的是当前类FileTest.class文件的URI目录.不包括自己!(2).Test.class.getResource("/")得到的是当前的classpath的绝对URI路径.(3).Thread.currentThread().getContextClassLoader().getResource("")得到的也是当前ClassPath的绝对URI

java获取文件的路径问题

java获取文件的路径问题 在java中读取读取文件,经常因为路径的问题找不到,此文用于记录如何定位文件的简单方法. 本基于springboot做的测试,主要是构建工程方便,所用的方法都是JDK中的方法,主要测试有"/"和没有""的问题,以及getResourceAsStream(String string)和getResource(String string)的问题. 1.项目结构 解释一下,主要有两个配置文件,a.properties和b.properties,

java获取项目访问路径的方法

在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是WebRoot 在class文件中,例如: WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径. 1.jsp中取得路径:以工程名为TEST为例:(1)得到包含工程名的当前页面全路径:request.getRequestURI()结果:/TEST/test.jsp(2)得到工程名:request.getContextPath()结

相对路径和绝对路径的区别,java获取项目访问路径的方法

相对路径和绝对路径的区别 在HTML里只要涉及文件的地方(如超级链接.图片等)就会涉及绝对路径与相对路径的概念. 1.绝对路径 绝对路径是指文件在硬盘上真正存在的路径.例如"bg.jpg"这个图片是存放在硬盘的"E:\book\网页布局代码\第2章"目录下,那么 "bg.jpg"这个图片的绝对路径就是"E:\book\网页布\代码\第2章\bg.jpg".那么如果要使用绝对路径指定网页的背景图片就应该使用 以下语句: <

解决项目打jar包后无法获取配置文件的路径问题

今天在开发中做一个java项目,要求读取配置文件中的信息,开始一直写成绝对路径,当项目打jar包以后就找不到配置文件了,后面在网上当了一个方法,问题最后解决了,拿出来跟大家分享一下. public class SMBConfig {//SMB消息参数public static String SMB_SENDER = ""; //Smb消息发送方public static String SMB_EXCHANGE = ""; //Smb消息组public static

java 获取项目绝对路径

this.getClass().getClassLoader().getResource("").getPath(); //获取项目的ClassPath的绝对路径 this.getClass().getClassLoader().getResource("").toURI().getPath(); //解决获取项目的ClassPath的绝对路径中文乱码的问题

java 获取桌面存储路径

FileSystemView fsv = FileSystemView.getFileSystemView(); //1.获取<"桌面">路径方法File com=fsv.getHomeDirectory(); //2.获取<"我的文档">路径的方法(getDefaultDirectory()). fsv.getDefaultDirectory() ; //这便是读取我的文档路径的方法

如何获取配置文件的路径

http://stackoverflow.com/questions/793657/how-to-find-path-of-active-app-config-fil 第一个回答: Try this AppDomain.CurrentDomain.SetupInformation.ConfigurationFile Hope it helps 第二个回答: Strictly speaking, there is no single configuration file. Excluding AS