一直以为使用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);
}
}
}

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

  1. java获取文件的路径问题

    java获取文件的路径问题 在java中读取读取文件,经常因为路径的问题找不到,此文用于记录如何定位文件的简单方法. 本基于springboot做的测试,主要是构建工程方便,所用的方法都是JDK中的方 ...

  2. java获取classpath文件路径空格转变成了转义字符%20的问题

    java获取classpath文件路径空格转变成了转义字符%20的问题 这个问题很纠结,服务器的文件路径带有空格,空格被转化是%20了,悲剧就出现了 下面展示一段代码String path = get ...

  3. web中纯java获取配置文件中的数据

    /*********获取配置文件,但配置文件中的值改变,不会随着值的改变也获取的参数值改变**********/  /**   * 原因是因为,类装载,装载完后,不会再去装载了   * *///  I ...

  4. java获取当前文件路径的方法

    第一种: File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f); ...

  5. Java获取资源的路径

    在Java中,有两种路径: 类路径 文件夹路径 使用类路径有两种方式: object.getClass().getResource()返回资源的URL MyClass.class.getResourc ...

  6. Java获取web项目路径

    File f = new File(WebPath.class.getResource("/").getPath()); String path = f.getParentFile ...

  7. Java获取配置文件中的属性

    获取配置文件的属性值 example 目标配置文件jdbc.properties,现想要在java类里面调用opcl的url jdbc.url=jdbc:mysql://localhost:3306/ ...

  8. java获取配置文件中变量值

    在resources 目录下新建config.properties文件 #文件保存路径 filePath=E:\\images\\file 工具类 public class ConfigUtil { ...

  9. java获取当前文件路径 [转]

    1.如何获得当前文件路径 常用: 字符串类型:System.getProperty("user.dir"); 综合: package com.zcjl.test.base; imp ...

随机推荐

  1. Yet another way to manage your NHibernate ISessionFactory

    So here is my current UnitOfWork implementation.  This one makes use of the somewhat new current_ses ...

  2. linux shell中curl 发送post请求json格式问题

    今天在linux中使用curl发送一个post请求时,带有json的数据,在发送时发现json中的变量没有解析出来 如下 curl -i -X POST -H 'Content-type':'appl ...

  3. Unity3D笔记 愤怒的小鸟<三> 实现Play界面2

    前言:在Play页面中给Play页面添加一个“开始游戏”和“退出游戏”按钮顺便再来一个背景音乐 添加按钮可以是GUI.Button(),也可以是GUILayout.Button():给图片添加按钮可以 ...

  4. Nginx配置项优化详解(转)

    (1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor / ...

  5. HIT 2715 - Matrix3 - [最小费用最大流][数组模拟邻接表MCMF模板]

    题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2715 Time limit : 5 sec Memory limit : 64 M Zhouguyue ...

  6. TensorFlow 度量张量和张量或者和零之间的误差值

    用于一个回归任务或者正则问题 # l2损失,output= sum(x ** 2)/2 inputdata = tf.Variable(np.random.rand(2,3), dtype=np.fl ...

  7. oracle中动态SQL使用详细介绍

    Oracle编译PL/SQL程序块分为两个种:通常静态SQL采用前一种编译方式,而动态SQL采用后一种编译方式,需要了解的朋友可以参考下     1.静态SQLSQL与动态SQL Oracle编译PL ...

  8. iOS多线程编程之线程间的通信(转载)

    一.简单说明 线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信 线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任务后,转到另1个线程继续执行任务 ...

  9. 删除未加入svn版本控制的文件(包括文件夹)

    删除未加入svn版本控制的文件(包括文件夹) svn status | grep '^?' | awk '{print $2}' | xargs rm -rf

  10. sql执行顺序与性能优化小技巧(一)

    关于sql条件匹配对执行效率影响测试 首先,创建一个标量函数create function ff_test() returns int as begin declare @i int=0 while( ...