2020-03-30读取配置文件

https://segmentfault.com/a/1190000012849921?utm_source=tag-newest

普通java类中加载配置文件路径

以classloader的方式来获取配置文件路径

String path = ClassName.class.getClassLoader().getResource("xxx.file").getPath();

这样就得到了一个文件的路径,继而我们可以把它转化成流。

InputStream inputStream = new FileInputStream(path);

是不是很简单呢。

用Class类加载资源文件

InputStream inputStream = ClassName.class.getResourceAsStream("/error.xml");

绝对定位,“/”开头,此时即以classpath为根目录

相对定位,不加“/”,则以调用getResourceAsStream类的包路径作为根目录(即该类所在包下获取资源)

https://www.cnblogs.com/coshaho/p/7466684.html

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); } } }

你可能感兴趣的:(2020-03-30读取配置文件)