首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java IO 流讀取類路徑文件:URL 解碼、BufferedReader 按行讀取完整示例

     編輯:Java 相關知識

核心步驟

  1. 獲取類加載器資源 URL:Class.getResource("/path")
  2. URL 解碼處理中文路徑:URLDecoder.decode(url.getFile(), "UTF-8")
  3. 構建 File 對象
  4. 使用 FileInputStream + InputStreamReader + BufferedReader 按行讀取

完整代碼

public static void readClasspathFile() {
    // 1. 獲取資源 URL(假設文件在 src/main/resources/simu/test.txt)
    String path = Test.class.getResource("/simu").getFile();
    try {
        // 2. URL 解碼(處理空格、中文等特殊字符)
        path = URLDecoder.decode(path, "UTF-8");
    } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
    System.out.println("文件路徑: " + path);
    // 3. 構建 File
    File file = new File(path, "test.txt");
    // 4. 字節流 -> 字符流 -> 緩衝流
    InputStream is = null;
    try {
        is = new FileInputStream(file);
    } catch (FileNotFoundException e) { e.printStackTrace(); }
    BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
    StringBuilder sb = new StringBuilder();
    String line;
    try {
        while ((line = br.readLine()) != null) {
            sb.append(line).append("\n");
        }
    } catch (IOException e) { e.printStackTrace(); }
    System.out.println("文件內容:\n" + sb.toString());
}

關鍵點提示

  • getResource("") 返回目錄 URL,getResource("file.txt") 返回文件 URL
  • JAR 包中文件無法用 File 訪問,需用 getResourceAsStream() 直接獲取輸入流
  • 指定 StandardCharsets.UTF_8 避免平台默認編碼不一致
  • try-with-resources (Java 7+) 自動關閉流,簡化 finally 塊

改進版:兼容 JAR 包

public static String readResource(String resourcePath) throws IOException {
    try (InputStream is = Test.class.getResourceAsStream(resourcePath);
         BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = br.readLine()) != null) sb.append(line).append("\n");
        return sb.toString();
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved