Java中關於文件路徑讀取問題的分析

Java讀取文件路徑

記錄一種通用獲取文件絕對路徑的方法,即使代碼換瞭位置瞭,這樣編寫也是通用的:

註意:
使用以下方法的前提是文件必須在類路徑下,類路徑:凡是在src下的都是類路徑。

1.拿到User.properties文件的絕對路徑:

package com.lxc.domain;
 
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
 
public class Test {
    public static void main(String[] args) {
        try {
            /**
             * Thread.currentThread() 當前線程對象
             * getContextClassLoader() 線程方法,獲取的是當前線程的類加載器對象
             * getResource("") 這是類加載器對象的方法,當前線程的類加載器默認從類的根路徑下加載資源
             *
             */
            String path = Thread.currentThread().getContextClassLoader().getResource("User.properties").getPath();
            System.out.println(path);
            FileReader reader = new FileReader(path);
    }
}

2.還可以以流的方式直接獲取到文件流,直接加載

package com.lxc.domain;
 
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
 
public class Fanshe {
 
    public static void main(String[] args) {
        // 以流的方式讀取
        InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/lxc/domain/userProperties.properties");
        Properties properties = new Properties();
        try {
            properties.load(inputStream);
            inputStream.close();
            System.out.println(properties.getProperty("username"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

這裡還要註意一個小點:
資源配置文件放到resource文件夾下和放到包路徑下,打包編譯之後資源文件的存放位置會不一樣,放到resource文件夾下打包編譯值後的位置在classes文件夾下:

放到包文件夾,打包編譯值後的位置在相應的包下:

3.通過資源綁定器獲取到資源文件信息

使用資源綁定器獲取資源文件信息,前提:
(1)資源文件必須在類路徑下,如果不在resource文件夾下,而是在包下,處理方式如下;
(2)參數不需要帶後綴

package com.lxc.domain;
 
import java.util.ResourceBundle;
 
public class Fanshe {
 
    public static void main(String[] args) {
        ResourceBundle resourceBundle = ResourceBundle.getBundle("User");
        String username = resourceBundle.getString("username");
        System.out.println(username);
    }

如果在包文件夾下,路徑應該這樣寫:

package com.lxc.domain;
 
import java.util.ResourceBundle;
 
public class Fanshe {
 
    public static void main(String[] args) {
        ResourceBundle resourceBundle = ResourceBundle.getBundle("com/lxc/domain/User");
        String username = resourceBundle.getString("username");
        System.out.println(username);
    }
}

到此這篇關於Java中關於文件路徑讀取問題的分析的文章就介紹到這瞭,更多相關Java讀取文件路徑內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: