獲取當前目錄的方法 和 System.getProperty()

在查找 “在服務器上獲取當前用戶主目錄”的時候看到了詳細的System.getProperty()參數,一起貼下。

先說獲取目錄的:

System.getProperty("user.dir")  用戶的當前工作目錄

System.getProperty("user.home")  用戶的主目錄

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

今天在閱讀JDBC的DriverManager類源碼時,看到了這麼一句代碼:

System.getProperty(“jdbc.drivers”);

  getProperty()這個方法是獲取指定鍵指示的系統屬性的,也就是說上面的代碼獲取的是jdbc.drivers這個屬性。我寫了個測試測試輸出,發現是null值。於是就打算看看系統屬性中有沒有jdbc.drivers這個值。
  查看了一下java api中的getProperty()這個方法,後通過getProperties()找到了能獲取到的屬性,如下圖所示:


  但是居然沒有我的jdbc.drivers,於是本着負責的態度,我決定將所有的屬性都輸出看一看。以下是通過System.getPropertys()和System.getProperty()變量所有系統屬性的方法。

    @Test
    public void test(){
        //獲取所有的屬性
        Properties properties = System.getProperties();
        //遍歷所有的屬性
        for (String key : properties.stringPropertyNames()) {
            //輸出對應的鍵和值
            System.out.println(key + "=" + properties.getProperty(key));
        }

    }

  對應的結果如下:

java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=C:\javaweb\jdk1.8.0_101_64\jre\bin
java.vm.vendor=Oracle Corporation
java.vendor.url=http://java.oracle.com/
path.separator=;
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg=sun.io user.script= user.country=CN
sun.java.launcher=SUN_STANDARD sun.os.patch.level=
java.vm.specification.name=Java Virtual Machine Specification
user.dir=E:\7.ProjectCodeSource\jdbc
java.runtime.version=1.8.0_101-b13
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:\javaweb\jdk1.8.0_101_64\jre\lib\endorsed
os.arch=amd64 java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\
line.separator=

java.vm.specification.vendor=Oracle Corporation user.variant=
os.name=Windows 10 sun.jnu.encoding=GBK
java.library.path=C:\javaweb\jdk1.8.0_101_64\bin;
java.specification.name=Java Platform API Specification
java.class.version=52.0
sun.management.compiler=HotSpot 64-Bit Tiered
Compilers os.version=10.0
user.home=C:\Users\Administrator
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=UTF-8
java.specification.version=1.8
user.name=Administrator
java.class.path=E:\7.ProjectCodeSource\jdbc\target\test-classes;
java.vm.specification.version=1.8 sun.arch.data.model=64
java.home=C:\javaweb\jdk1.8.0_101_64\jre
sun.java.command=org.eclipse.jdt.internal.junit.runner.RemoteTestRunner
-version 3 -port 57975 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader
-loaderpluginname org.eclipse.jdt.junit4.runtime -test com.jim.jdbc.JDBCTest:test java.specification.vendor=Oracle
Corporation user.language=zh awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode
java.version=1.8.0_101
java.ext.dirs=C:\javaweb\jdk1.8.0_101_64\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
sun.boot.class.path=C:\javaweb\jdk1.8.0_101_64\jre\lib\resources.jar;C:\javaweb\jdk1.8.0_101_64\jre\lib\rt.jar;C:\javaweb\jdk1.8.0_101_64\jre\lib\sunrsasign.jar;
java.vendor=Oracle Corporation
file.separator=\
java.vendor.url.bug=http://bugreport.sun.com/bugreport/
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.desktop=windows
sun.cpu.isalist=amd64

  輸出的東西也太亂了,我就加了一句判斷看有沒有jdbc.drivers這個屬性。代碼如下:

@Test
    public void test(){
        //獲取所有的屬性
        Properties properties = System.getProperties();
        //爲了看看系統的屬性有幾個,加了一個計數器
        int count = 0;
        //遍歷所有的屬性
        for (String key : properties.stringPropertyNames()) {
            System.out.println(key + "=" + properties.getProperty(key));
            count++;
            if (key.equalsIgnoreCase("jdbc.drivers")){
                System.out.println("YES");
                return ;
            }

        }
        System.out.println(count);
    }

  結果是根本沒有jdbc.drivers這個屬性,系統的屬性有57個,比java api中列出來的要多,所以如果你的屬性不再java api的所列出的列表中,不要灰心,可以使用上面的代碼判斷一下。

  我後來看了java api之後,加了一句代碼在方法最前面:


System.setProperty("jdbc.drivers","aaa.bbb.ccc");

  結果就顯示有了。也就是說,DriverManager中的jdbc.drivers這個系統屬性不是本來系統自帶的,需要用戶自己設定採用。如果不設定,則爲null。這樣看來,一切都說通了。
————————————————
版權聲明:本文爲CSDN博主「阿進的寫字檯」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_37139197/article/details/78877766

        
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章