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

Java 從 JAR 檔案讀取資料完整範例

     編輯:Java 相關知識

Java 從 JAR 檔案讀取資料完整範例。本站提醒廣大學習愛好者:此文章僅供參考,不一定能完全符合您的需求。以下是完整範例正文


本文範例說明從 Java 的 JAR 檔案中讀取資料的方法。分享給大家供參考。詳細如下:

Java 檔案 (Java Archive, JAR) 是基於 Java 技術的封裝方案。它允許開發人員將所有相關內容 (.class、圖片、聲音和支援檔案等) 打包到一個單一檔案中。JAR 檔案格式支援壓縮、身份驗證和版本控制等特性。

從 JAR 檔案中取得它所包含的檔案內容是件棘手的工作,但也不是做不到。這篇技術文將告訴你如何從 JAR 檔案中取得一個檔案。我們會先取得這個 JAR 檔案中的檔案目錄,然後讀取指定的檔案。

如果你熟悉常見的 ZIP 格式,你會發現 JAR 檔案和它差別不大。JAR 檔案提供一個將多個檔案打包到一個檔案中的方法,並且被打包的每個檔案都可以單獨壓縮。JAR 檔案可以包含一個稱為 manifest 的東西,它們允許開發人員添加與內容有關的其他資訊。例如,manifest 可以指明由 JAR 檔案中的哪個檔案開始執行應用程式,或指定這個庫的版本等。

Java 2 SDK 標準版提供了一個 jar 工具,你可以透過它在控制台下讀寫 JAR 檔案。然後,也許有些時候你想在你的程式中讀寫 JAR 檔案。你要用到的類別都在 java.util.jar 套件中。這裡要用到的關鍵類別是 JarFile 類別,它是一個 .jar 檔案本身的參考。其中的每個檔案則由 JarEntry 參考。

現在開始,傳遞一個參數給 JarFile 的建構函式建立一個 JarFile 實例,這個參數可以是 String 也可以是 File,它是一個 .jar 檔案的位置:

JarFile jarFile = new JarFile("thefile.jar");
// 或
File file = new File("thefile.jar");
JarFile jarFile = new JarFile(file);

在你取得一個 JAR 檔案的參考後,你就可以讀取其內容目錄了。JarFile 的 entries 方法傳回一個所有條目的 Enumeration 物件,你還可以從 manifest 檔案中取得它的屬性、身份驗證資訊和其他資訊,如條目的名稱和大小。

Enumeration enum = jarFile.entries();
while (enum.hasMoreElements()) {
    process(enum.nextElement());
}

每一個條目都是一個 JarEntry。這個類別有一些諸如 getName、getSize 和 getCompressedSize 的方法。

完整程式碼範例:列出 JAR 內容、讀取 JAR 內文字檔案內容。

import java.io.*;
import java.util.*;
import java.util.jar.*;

public class JarDir {
    public static void main(String args[]) throws IOException {
        if (args.length != 1) {
            System.out.println("Please provide a JAR filename");
            System.exit(-1);
        }
        JarFile jarFile = new JarFile(args[0]);
        Enumeration enum = jarFile.entries();
        while (enum.hasMoreElements()) {
            process(enum.nextElement());
        }
    }
    private static void process(Object obj) {
        JarEntry entry = (JarEntry) obj;
        String name = entry.getName();
        long size = entry.getSize();
        long compressedSize = entry.getCompressedSize();
        System.out.println(name + " " + size + " " + compressedSize);
    }
}

讀取 JAR 內指定文字檔:

import java.io.*;
import java.util.jar.*;

public class JarRead {
    public static void main(String args[]) throws IOException {
        if (args.length != 2) {
            System.out.println("Please provide a JAR filename and file to read");
            System.exit(-1);
        }
        JarFile jarFile = new JarFile(args[0]);
        JarEntry entry = jarFile.getJarEntry(args[1]);
        InputStream input = jarFile.getInputStream(entry);
        process(input);
        jarFile.close();
    }
    private static void process(InputStream input) throws IOException {
        InputStreamReader isr = new InputStreamReader(input);
        BufferedReader reader = new BufferedReader(isr);
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        reader.close();
    }
}

希望本文所述對大家的 Java 程式設計有所幫助。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved