一、路径

  绝对路径: 指的是文件在系统中的真实路径(物理路径)。
  相对路径: 指的是文件相对某个目录的相对路径。
  对于java application 工程来说,当编写完一个类之后,class文件会编译,默认存放在bin目录中。
存放的目录结构安装包的命名依次存放。同时一些在src目录,或其他Source Fodder目录中的资源文件也会被编译到bin目录中(有些构建的不是存放在bin目录中,这根据构建工具而异)。

  而当程序运行的时候,执行的就是bin目录中的class文件,读取的资源文件也是bin目录中的。
对于java web 工程来说,当编写完一个类之后,class文件默认会被编译到这个web工程下的Webapp目录下的WEB-INF生成的classes目录中。
存放的目录结构安装包的命名依次存放。同样一些在src目录,或其他Source Fodder目录中的资源文件也会被编译到classes目录中。

  而我们对路径的操作基本上是基于class文件所在的目录进行的。

二、示例

  1、通过class 与 ClassLoader获取路径

     //testapp为工程名称
// 返回编译后的class-path路径
//路径: /D:/web-create/testapp/target/classes/
System.out.println(Thread.currentThread().getContextClassLoader().getResource("").getPath());
//路径: /D:/web-create/testapp/target/classes/com 此处的com目录必须要存在,否则会抛异常
System.out.println(ClassLoader.getSystemResource("com").getPath());
//路径: /D:/web-create/testapp/target/classes/ 编译代码后的classes路径
System.out.println(ClassLoader.getSystemResource("").getPath());
//路径: /D:/web-create/testapp/target/classes/ 编译代码后的classes路径
System.out.println(Test.class.getResource("/").getPath());
//路径: /D:/web-create/testapp/target/classes/com/ Test.class文件所在路径
System.out.println(Test.class.getResource("").getPath());
//路径: /D:/web-create/testapp/target/classes/com/Test.class Test.class文件全路径
System.out.println(Test.class.getResource("Test.class").getPath());

  2、webapp中通过request,session等获取路径

     HttpServletRequest request = null;
///返回web应用名称: testapp
System.out.println(request.getContextPath()); // 当前web应用的绝对路径(后面没有\) E:/web-create\testapp\src\main\resources\webapp
System.out.println(request.getSession().getServletContext().getRealPath("")); // 当前web应用的绝对路径(后面有\) E:/web-create\testapp\src\main\resources\webapp\
System.out.println(request.getSession().getServletContext().getRealPath("/")); // 当前web应用中指定目录绝对路径 E:/web-create\testapp\src\main\resources\webapp\resource\image
System.out.println(request.getSession().getServletContext().getRealPath("/resource/image")); //获取PATH目录下的子目录以集合的形式返回():[/resource/image/2015/]
System.out.println(request.getSession().getServletContext().getResourcePaths("/resource/image")); // 当前web应用中指定目录绝对路径 E:/web-create\testapp\src\main\resources\webapp\resource\image
System.out.println(request.getRealPath("/resource/image"));// 不建议使用,用 ServletContext.getRealPath()方法代替

  3、文件相关路径

    //路径: D:\   工程所在根目录
System.out.println(new File("/").getAbsolutePath());
//路径: D:\web-create\testapp\com
System.out.println(new File("com").getAbsolutePath());
//路径:D:\web-create\testapp
System.out.println(new File("").getAbsolutePath());
//路径:D:\web-create\testapp
System.out.println(System.getProperty("user.dir"));
// class path 路径
System.out.println(System.getProperty("java.class.path"));

  4、加载src(实际上是bin目录或classes目录下的)下的properties

     //加载文件相关
InputStream is = new FileInputStream(ClassLoader.getSystemResource("").getPath() + "config.redis.pool.properties");//该种方式与下面得到的结果一致
is = Test.class.getResourceAsStream("config.redis.pool.properties");//与下面结果一样
is = Test.class.getResourceAsStream("/config.redis.pool.properties");
//InputStream is = Test.class.getResourceAsStream("/com/config.redis.pool.properties");//参数是相对于classes目录下的文件全路径
Properties properties = new Properties();
properties.load(is);
is.close();
for(Object obj :properties.keySet()){
System.out.println("key: " + obj + " value: " + properties.get(obj));
}  

java工程中的相关路径的更多相关文章

  1. Log4j在Java工程中使用方法

    Eclipse新建Java工程,工程目录如下 1.下载log4j的Jar包,在Java工程下新建lib文件夹,将jar包拷贝到此文件夹,并将其加入到路径中,即:Jar包上右键——Build Path— ...

  2. java工程中不能存在多个数据库连接jar包

    java工程中不能存在多个数据库连接jar包 比如存在mysql-java-connector.jar的,放入mssqlserver.jar就会产生冲突.只能存在一个类型的jar包.

  3. 在java工程中导入jar包的注意事项

    在java工程中导入jar包后一定要bulid path,不然jar包不可以用.而在java web工程中导入jar包后可以不builld path,但最好builld path.

  4. java工程中的.classpathaaaaaaaaaaaaaaaa<转载>

    第一部分:classpath是系统的环境变量,就是说JVM加载类的时候要按这个路径下去找,当然这个路径下可以有jar包,那么就是jar包里所有的class. eclipse build path是ec ...

  5. java工程中的.classpath<转载>

    第一部分:classpath是系统的环境变量,就是说JVM加载类的时候要按这个路径下去找,当然这个路径下可以有jar包,那么就是jar包里所有的class. eclipse build path是ec ...

  6. 【技巧】Java工程中的Debug信息分级输出接口

    也许本文的标题你们没咋看懂.但是,本文将带大家领略输出调试的威力. 灵感来源 说到灵感,其实是源于笔者在修复服务器的ssh故障时的一个发现. 这个学期初,同袍(容我来一波广告产品页面,同袍官网)原服务 ...

  7. 【技巧】Java工程中的Debug信息分级输出接口及部署模式

    也许本文的标题你们没咋看懂.但是,本文将带大家领略输出调试的威力. 灵感来源 说到灵感,其实是源于笔者在修复服务器的ssh故障时的一个发现. 这个学期初,同袍(容我来一波广告产品页面,同袍官网)原服务 ...

  8. web工程中的各种路径(eclipse开发)

    目前遇到的 web 工程中要写url和路径的文件有 webContent中.jsp/.html :action src中的servlet类 : 映射地址.重定向.请求转发.访问资源文件(webCont ...

  9. Java工程中各种带有O的对象分类笔记

    在Java工程里面,我们总会碰到各种不同的带有O的对象, 对于一个小白来说,经常会混淆这些对象的使用场景,所以在这里mark一下,让自己的代码更加规范,但这个也是Java被诟病的地方,不同的业务需要给 ...

随机推荐

  1. .Net魔法堂:史上最全的ActiveX开发教程——发布篇

    一. 前言 接着上一篇<.Net魔法堂:史上最全的ActiveX开发教程——开发篇>,本篇讲述如何发布我们的ActiveX. 二.废话少讲,马上看步骤! 1. 打包  C#开发的Activ ...

  2. 【Spark】----Spark on Yarn

    最近从Hadoop 1.x 转到Hadoop 2.x 同时将一些java 程序转为Scala的程序将平台上的代码减少了很多,在实施的过程中,开到一些Spark相关的YARN的部署上都是基于之前的Had ...

  3. 数论 - 高精度Fibonacci数 --- UVa 10183 : How Many Fibs ?

    How many Fibs? Description Recall the definition of the Fibonacci numbers: f1 := 1 f2 := 2 fn := f n ...

  4. 【C#】OOP之继承那点事

    前言: 继承这点事,说多不多,说少不少,这里只描述了一些我认为的基础篇,望各位大神指教.本节参照了C#高级编程和Think in java对继承的描述,我个人认为OOP只是思想,故看明白一个就说通的, ...

  5. iis7.5错误 配置错误

    iis7.5详细错误   HTTP 错误 500.19 - Internal Server Error无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息模块 IIS Web Core 通知 ...

  6. Dev-Cpp配置OpenGL图形库(成功版本:Dev-Cpp 5.7.1 MinGW 4.8.1)

    ★配置前须知:Dev-Cpp自带OpenGL的使用和OpenGL简介 (附Dev-Cpp下载地址:http://sourceforge.net/projects/orwelldevcpp/?sourc ...

  7. Ubuntu安装图形桌面

    apt-get直接更新即可 apt-get install ubuntu-desktop

  8. EffectiveJava——用函数对象表示策略

    有些语言支持函数指针.代理.lambda表达式,或者支持类似的机制,允许程序把“调用特殊函数的能力”储存起来并传递这种能力.这种机制通常用于允许函数的调用者通过传入第二个函数,来指定自己的行为.比较器 ...

  9. FAQ_1_陌生的VERSION.SDK_INT

    看到VERSION.SDK_INT不禁诧异,这是何物?! 看API的定义,如下: 原来是一个常量值.但是这个常量值可以根据系统的不同而不同哟!为了揭开其神秘的面纱,将源码ctrl如下: 可以看出,获取 ...

  10. web api post注意事项

    黄色笑话 近期一个项目需要使用到web api 在使用过程中,对应get请求方式的使用基本没出什么问题 但是对于post请求状况百出. 今将遇到的的问题列出.以作借鉴. 问题  -----post方式 ...