由System.getProperty("user.dir")引发的联想

  • 是什么:

    • System.getPorperty("user.dir")的功能是得到当前项目路径。
1    @Test
2     public void test02() throws IOException {
3         String path1 = System.getProperty("user.dir") ;
4         System.out.println("当前工程路径----"+path1);
5         String path2 = Test01.class.getPackage().getName().replaceAll("//.","/");
6         System.out.println("当前包路径---"+path2);
7         String canonicalPath = new java.io.File( "." ).getCanonicalPath();
8         System.out.println("canonicalPath---"+canonicalPath);
9     }

  控制台输出如下:(ps:这是我本地的项目所在路径)  当前工程路径----D:\remote_medical\02\test  当前包路径---com.qtong.test  canonicalPath---D:\remote_medical\02\test   
  • 为什么:

    • 所有在java.io包中的类,都是将相对路径名解释为起始于用户当前的工作目录,所以我们可以通过 System.getProperty("user.dir") 来获得当前目录。但是通过 System.getProperties("user.dir")取得的值是根据我们的运行环境改变而改变的。
    • 建议不要使用System.getProperties("user.dir");,因为通过键"user.dir"取得的值是根据我们的运行环境改变而改变的。一般情况下,在服务端都是使用绝对路径,将绝对路径定义在"filePath.properties"这样的配置文件中。对于web开发来说,在服务器端使用相对路径,是没有意义的。
  • 用处

  System类属于java.lang包,system类的构造函数的修饰符是private,所以这个类不可以被实例化,加载的时候调用static代码块。

  System类提供了标准输入输出流,错误输出流,获取外部属性和系统环境的方法,加载类库和文件的方法,快速copy数组的方法;其中out和err的类型是PrintStream.

  1. system类中的其他常用方法

    1. 标准输入流         System.in() ;(标准输入经常与Scanner类与结合 )
    2. 标准输出流         System.out();
    3. 错误输出流         System.error(); 其中 outerr 的类型是PrintStream
    4. 对外部定义的属性和环境变量的访问           System.getProperty("user.dir");
    5. 加载文件和库的方法
    6. 快速复制数组的一部分    System.arraycopy(Object src,  int  srcPos, Object dest, int destPos,int length)
    7. System.getProperties()可以确定当前的系统属性,返回值是一个Properties;
    8. System.load(String filename)等同于:System.getProperties().load(String filename)它们的作用是可以从作为动态库德本地文件系统中指定的文件名加载代码文件。
    9. System.setProperties(Properties propes):将系统属性设置为Properties参数;
    10. System.setProperties(String key,String value)等同于System.getProperties().setProperties(String key,String value):设置指定键指示的系统属性
  2. 我们可以通过System.getProperties().toString() 看一下目前所有的属性,都是keyvalue对。
1     @Test
2     public void test01() throws IOException {
3         Properties properties = System.getProperties();
4         String[] split = properties.toString().split(",");
5         int i = 0;
6         for (String string : split) {
7                 System.out.println(string);
8             }
9     }

控制台输出如下:
 1     java.runtime.name = Java(TM) SE Runtime Environment,
 2     sun.boot.library.path = D:\aboutDev\java\jdk1.7\jre\bin,
 3     java.vm.version = 24.72- b04,
 4     java.vm.vendor = Oracle Corporation,
 5     java.vendor.url = http://java.oracle.com/,
 6     path.separator = ;,
 7     java.vm.name = Java HotSpot(TM) 64- Bit Server VM,
 8     file.encoding.pkg = sun.io,
 9     user.country = CN,
10     user.script = ,
11     sun.java.launcher = SUN_STANDARD,
12     sun.os.patch.level = Service Pack 1,
13     java.vm.specification.name = Java Virtual Machine Specification,
14     user.dir = D:\remote_medical\02\test,
15     java.runtime.version = 1.7.0_72- b14,
16     java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment,
17     java.endorsed.dirs = D:\aboutDev\java\jdk1.7\jre\lib\endorsed,
18     os.arch = amd64,
19     java.io.tmpdir = C:\Users\Duchong\AppData\Local\Temp\,
20     line.separator = ,
21     java.vm.specification.vendor = Oracle Corporation,
22     user.variant = ,
23     os.name = Windows 7,
24     sun.jnu.encoding = GBK,
25     java.library.path =“太长了,所以在这里就不写了”} 

   

看到了一片很好的文章,是对System.getProperty()方法的介绍,是英文的。戳这里Java.lang.System.getProperty() Method

网站在这里

原文地址:https://www.cnblogs.com/chong-IT/p/8442999.html

时间: 2024-10-12 10:33:25

由System.getProperty("user.dir")引发的联想的相关文章

eclipse中的System.getProperty("user.dir")

1.在Java Application中,上述中的获取的是Java项目的路径 (1)运行源码 /** * */ package com.you.test; /** * @author YouHaiDong * */ public class Property { /** * @param args */ public static void main(String[] args) { String path = System.getProperty("user.dir"); Syste

System.getProperty("user.dir")

今天写一个小程序,需要获取当前项目的根目录.百度搜索得知System.getProperty("user.dir")该方法可以做到.看到这行代码不由让我思考:“user.dir”是一个什么玩意?System.getProperty("key")该方法到底有多少个key?于是经过对api的研究,发现了System.getProperties()这个方法可以获取到所有的key值;代码如下: 1 public void getSystemKey(){ 2 3 File s

System.getProperty("user.dir"); 获得系统属性

System.getProperty("user.dir"); 获得系统属性 getProperties public static Properties getProperties() 确定当前的系统属性. 首先,如果有安全管理器,则不带参数直接调用其 checkPropertiesAccess 方法.这可能导致一个安全性异常. 将 getProperty(String) 方法使用的当前系统属性集合作为Properties 对象返回.如果没有当前系统属性集合,则先创建并初始化一个系统

使用System.getProperty("user.dir")获取项目下的文件内容

System.getProperty("user.dir")的作用是获取到项目所在的绝对路径,使用这个api就能获取项目下的文件 例如我想获取项目下/src/main/resources/config/certificate.properties的内容,可以使用如下代码: public static Properties getProperties(String pathInDemo) throws IOException { Properties properties = new P

java中的System.getProperty()和getenv()方法

Java system.getproperty(String name)获取系统属性 属性说明: public class test{ public static void main(String[] args) { System.out.println("Java Runtime Environment version = " + System.getProperty("java.version")); System.out.println("Java

System.getProperty()方法大全

System.out.println("java版本号:" + System.getProperty("java.version")); // java版本号System.out.println("Java提供商名称:" + System.getProperty("java.vendor")); // Java提供商名称System.out.println("Java提供商网站:" + System.get

java的System.getProperty()方法能够获取的值

java.version Java 执行时环境版本号 java.vendor Java 执行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装文件夹 java.vm.specification.version Java 虚拟机规范版本号 java.vm.specification.vendor Java 虚拟机规范供应商 java.vm.specification.name Java 虚拟机规范名称 java.vm.version Jav

java的System.getProperty()方法可以获取的值

java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目录 java.vm.specification.version Java 虚拟机规范版本 java.vm.specification.vendor Java 虚拟机规范供应商 java.vm.specification.name Java 虚拟机规范名称 java.vm.version Java 虚

java的System.getProperty()值的方法可以得到

java.version Java 执行时环境版本号 java.vendor Java 执行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装文件夹 java.vm.specification.version Java 虚拟机规范版本号 java.vm.specification.vendor Java 虚拟机规范供应商 java.vm.specification.name Java 虚拟机规范名称 java.vm.version Jav