一 相对路径的获得
说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的java项目还是web项目)
String relativelyPath=System.getProperty("user.dir"); 
上述相对路径中,java项目中的文件是相对于项目的根目录
web项目中的文件路径视不同的web服务器不同而不同(tomcat是相对于 tomcat安装目录\bin)

二 类加载目录的获得(即当运行时某一类时获得其装载目录)
1.1)通用的方法一(不论是一般的java项目还是web项目,先定位到能看到包路径的第一级目录)

InputStream is=TestAction.class.getClassLoader().getResourceAsStream("test.txt"); 
(test.txt文件的路径为 项目名\src\test.txt;类TestAction所在包的第一级目录位于src目录下)

上式中将TestAction,test.txt替换成对应成相应的类名和文件名字即可

1.2)通用方法二 (此方法和1.1中的方法类似,不同的是此方法必须以'/'开头,参考http://riddickbryant.iteye.com/blog/436693) 
InputStream is=Test1.class.getResourceAsStream("/test.txt"); 
(test.txt文件的路径为 项目名\src\test.txt,类Test1所在包的第一级目录位于src目录下)

三 web项目根目录的获得(发布之后)
1 从servlet出发

可建立一个servlet在其的init方法中写入如下语句
ServletContext s1=this.getServletContext();
String temp=s1.getRealPath("/"); (关键) 
结果形如:D:\工具\Tomcat-6.0\webapps\002_ext\ (002_ext为项目名字)

如果是调用了s1.getRealPath("")则输出D:\工具\Tomcat-6.0\webapps\002_ext(少了一个"\")

2 从httpServletRequest出发

String cp11111=request.getSession().getServletContext().getRealPath("/");

结果形如:D:\工具\Tomcat-6.0\webapps\002_ext\

四 classpath的获取(在Eclipse中为获得src或者classes目录的路径)

方法一 Thread.currentThread().getContextClassLoader().getResource("").getPath()

eg: String t=Thread.currentThread().getContextClassLoader().getResource("").getPath();
System.out.println("t---"+t);

输出:t---/E:/order/002_ext/WebRoot/WEB-INF/classes/

方法二 JdomParse.class.getClassLoader().getResource("").getPath() (JdomParse为src某一个包中的类,下同)

eg:String p1=JdomParse.class.getClassLoader().getResource("").getPath();
System.out.println("JdomParse.class.getClassLoader().getResource--"+p1);

输出: JdomParse.class.getClassLoader().getResource--/E:/order/002_ext/WebRoot/WEB-INF/classes/

另外,如果想把文件放在某一包中,则可以 通过以下方式获得到文件(先定位到该包的最后一级目录)

eg String p2=JdomParse.class.getResource("").getPath(); 
System.out.println("JdomParse.class.getResource---"+p2);

输出: JdomParse.class.getResource---/E:/order/002_ext/WebRoot/WEB-INF/classes/jdom/ (JdomParse为src目录下jdom包中的类)

四 属性文件的读取:

方法 一

InputStream in = lnew BufferedInputStream( new FileInputStream(name));    Properties p = new Properties();   p.load(in);

注意路径的问题,做执行之后就可以调用p.getProperty("name")得到对应属性的值

方法二

Locale locale = Locale.getDefault(); 
ResourceBundle localResource = ResourceBundle.getBundle("test/propertiesTest", locale); 
String value = localResource.getString("test"); 
System.out.println("ResourceBundle: " + value);

工程src目录下propertiesTest.properties(名字后缀必须为properties)文件内容如下:

test=hello word

可同时参考Java System Properties

  • JRE related system properties

    java.home JRE home directory, e.g., “C:\Program Files\Java\jdk1.7.0_09\jre“.
    java.library.path JRE library search path for search native libraries. It is usually but not necessarily taken from the environment variable PATH.
    java.class.path JRE classpath e.g., '.' (dot – used for current working directory).
    java.ext.dirs JRE extension library path(s), e.g, “C:\Program Files\Java\jdk1.7.0_09\jre\lib\ext;C:\Windows\Sun\Java\lib\ext“.
    java.version JDK version, e.g., 1.7.0_09.
    java.runtime.version JRE version, e.g. 1.7.0_09-b05.
  • File related system properties

    file.separator symbol for file directory separator such as 'd:\test\test.java'. The default is '\' for windows or '/' for Unix/Mac.
    path.separator symbol for separating path entries, e.g., in PATH or CLASSPATH. The default is ';' for windows or ':' for Unix/Mac.
    line.separator symbol for end-of-line (or new line). The default is "\r\n" for windows or "\n" for Unix/Mac OS X.
  • User related system properties

    user.name the user’s name.
    user.home the user’s home directory.
    user.dir the user’s current working directory.
  • OS related system properties

    os.name the OS’s name, e.g., “Windows 7“.
    os.version the OS’s version, e.g., “6.1“.
    os.arch the OS’s architecture, e.g., “x86“.

参考:https://blog.csdn.net/mydreamongo/article/details/8220577

Java获取项目根目录等其他系统属性的更多相关文章

  1. java 获取项目根目录

    代码入下: request.getSession().getServletContext().getRealPath(); 这里的getRealPath()括号里面可以输入你想得到的具体目录. 需要注 ...

  2. Java中动态获取项目根目录的绝对路径

    https://www.cnblogs.com/zhouqing/archive/2012/11/10/2757774.html 序言 在开发过程中经常会用到读写文件,其中就必然涉及路径问题.使用固定 ...

  3. Java学习笔记三十:Java小项目之租车系统

    Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的“呱呱租车系统” 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金额.总载货量以及其车 ...

  4. Weblogic部署web项目获取项目根目录为null

    写在前面 图片上传功能, web项目部署在本地Tomcat上并没有问题, 但是打成war包部署到Linux服务器Weblogic下却出现如题问题, 导致图片上传失败. 问题代码 String real ...

  5. Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL

    Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL >>>>>>>>>>>>> ...

  6. Java获取项目中的路径 分类: Java Game 2014-08-14 10:17 122人阅读 评论(0) 收藏

    在项目中经常需要获取某个文件的路径: 在这里提供一些获取路径的方法.. 1.此种方式获取的路径,是当前类所在的路径: UserDAOTest.class.getResource("UserD ...

  7. java获取项目地址或tomcat绝对地址

    在java项目中获取文件的路径,不管是相对路径还是绝对路径,其本质都是通过绝对路径去寻找. 获取项目地址 request.getSession().getServletContext().getRea ...

  8. c# 获取项目根目录方法

    编写程序的时候,经常需要用的项目根目录.自己总结如下 1.取得控制台应用程序的根目录方法     方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径 ...

  9. java获取Timestamp类型的当前系统时间

    java获取取得Timestamp类型的当前系统时间 java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = new ...

随机推荐

  1. Cnr

    Description 写一个求阶乘的函数,实现Cmn排列,就是指从给定n个数的元素中取出指定r个数的元素,进行排序,我们用A(n,r)表示,组合,则是指从给定n个数的元素中仅仅取出指定r个数的元素, ...

  2. idea搜索jar中的类

    ctrl+n快捷键

  3. goroutine 和线程的区别

    好久没写点儿啥了,强行更新一下. 1,从使用上讲 1,goroutine 比线程更轻量级,可以创建十万.百万不用担心资源问题. 2,goroutine 和 chan 搭配使用,实现多线程.高并发 实现 ...

  4. 在Windows上安装Nexus 3.2.0-01

      在Windows上安装Nexus 环境: Windows 7 apache-maven-3.3.9 JDK 1.8 下载Nexus: https://sonatype-download.globa ...

  5. ftp搭建安装

    本文摘要:https://jingyan.baidu.com/article/380abd0a77ae041d90192cf4.html FTP 是File Transfer Protocol(文件传 ...

  6. Java_图片切片

    package com.creditease.fetch.credit.util.similarity; import java.awt.image.BufferedImage; import jav ...

  7. Spark on Yarn with HA

    Spark 可以放到yarn上面去跑,这个毫无疑问.当Yarn做了HA的时候,网上会告诉你基本Spark测不需做太多的关注修改,实际不然. 除了像spark.yarn开头的相关配置外,其中一个很重要的 ...

  8. Go数组求和

    package main import "fmt" ]int func main() { a := [],,,,} var b int for index,value := ran ...

  9. WebService的两种方式SOAP和REST有什么不同?

    REST API 优点: 1. 轻量级的解决方案,不必向SOAP那样要构建一个标准的SOAP XML. 2. 可读性比较好:可以把URL的名字取得有实际意义. 3. 不需要SDK支持:直接一个Http ...

  10. [LeetCode] K-th Smallest Prime Fraction 第K小的质分数

    A sorted list A contains 1, plus some number of primes.  Then, for every p < q in the list, we co ...