日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

java读取系统中指定的文件_java读取jar中指定的文件

發布時間:2025/4/5 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java读取系统中指定的文件_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 文件。(這篇技巧僅涉及了在程序中讀 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 文件中獲得它的屬性、身份驗證信息以及其它的信息,如條目的名稱和大小。

//

譯者注:enum?在?Java?5.0?中是關鍵字,所以該例在?5.0?中應該編譯失敗

//

但英文原著發表于?Java?5.0?出現之前,所以可以使用?enum?作變量名

//

為忠于原著,這里未作修改

Enumeration

enum

=

jarFile.entries();

while

(

enum

.hasMoreElements())?{

process(

enum

.nextElement());

}

以前提到過,每個個體都是一個 JarEntry。這個類有一些諸如 getName、getSize 和getCompressedSize 的方法。

讓我們舉例說明如何在程序中使用這些特性。下面的程序顯示 JAR 文件的內容列表及各項的名稱、大小和壓縮后的大小。(這很類似于使用帶 "t" 和 "v" 參數的 jar 命令。)

import

java.io.

*

;

import

java.util.

*

;

import

java.util.jar.

*

;

public

class

JarDir

{

publicstaticvoidmain?(String?args[])?

throwsIOException{

if(args.length!=1){

????????????System.out.println("Please?provide?a?JAR?filename");

????????????System.exit(-1);

????????}????????JarFile?jarFile=newJarFile(args[0]);

????????Enumerationenum=jarFile.entries();

while(enum.hasMoreElements()){

????????????process(enum.nextElement());

????????}????}

privatestaticvoidprocess(Object?obj){

????????JarEntry?entry=(JarEntry)obj;

????????String?name=entry.getName();

longsize=entry.getSize();

longcompressedSize=entry.getCompressedSize();

????????System.out.println(name+""+size+""+compressedSize);

????}}

如果你用 J2SE 1.4.1 中的 jce.jar 來試驗上述的 JarDir 程序,你應該看像下面那樣的輸出 (在 ... 處應該顯示更多文件):

META-INF/MANIFEST.MF????5315????1910

META-INF/4JCEJARS.SF????5368????1958

META-INF/4JCEJARS.DSA???2207????1503

META-INF/???????0???????2

javax/??0???????0

javax/crypto/???0???????0

javax/crypto/interfaces/????????0???????0

javax/crypto/interfaces/DHKey.class?????209?????185

javax/crypto/interfaces/DHPublicKey.class???????265?????215

javax/crypto/interfaces/DHPrivateKey.class??????267?????215

javax/crypto/interfaces/PBEKey.class????268?????224

javax/crypto/SecretKey.class????167?????155

...

注意輸入內容頂部包含 META-INF 的那幾行,這是 menifest 和安全驗證信息。其中大小為 0 的項不是文件,而是目錄。

要真正從 JAR 文件中讀取文件內容,你必須獲得相應條目的 InputStream。這不同于 JarEntry。JarEntry 僅包括了入口信息,卻并未包含實際的內容。這很像 File 和 FileInputSteram 的區別。只訪問 File,永遠不會打開相應的文件,它只讀取在目錄中的信息。下面告訴你如何從一個條目得到 InputStream:

InputStream input = jarFile.getInputStream(entry);

得到輸入流之后,你只需要像讀其它流一樣讀它就行了。如果是一個文本流,要記得使用一個 Reader 來從流中獲取字符。而對于字節流,如圖片,則只好直接讀取。

下面的程序演示了從一個 JAR 文件中讀取內容。運行程序時,需要指定要從 JAR 文件中讀取的文件名,這個文件必須是文本文件類型。

import

java.io.

*

;

import

java.util.jar.

*

;

public

class

JarRead

{

publicstaticvoidmain?(String?args[])?

throwsIOException{

if(args.length!=2){

????????????System.out.println("Please?provide?a?JAR?filename?and?file?to?read");

????????????System.exit(-1);

????????}????????JarFile?jarFile=newJarFile(args[0]);

????????JarEntry?entry=jarFile.getJarEntry(args[1]);

????????InputStream?input=jarFile.getInputStream(entry);

????????process(input);

????????jarFile.close();

????}

privatestaticvoidprocess(InputStream?input)?

throwsIOException{

????????InputStreamReader?isr=newInputStreamReader(input);

????????BufferedReader?reader=newBufferedReader(isr);

????????String?line;

while((line=reader.readLine())!=null){

????????????System.out.println(line);

????????}????????reader.close();

????}}   假設你有一個名為 myfiles.jar 的 JAR 文件,其中有一個名為 spider.txt 文本文件,再假設那個??pider.txt 包含如下文本: The itsy bitsy spider? Ran up the water spout Down came the rain and Washed the spider out?   運行下面的命令以顯示 JAR 文件中該文本文件的內容: java JarRead myfiles.jar spider.txt

總結

以上是生活随笔為你收集整理的java读取系统中指定的文件_java读取jar中指定的文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: xxx69美国 | 在线视频免费观看一区 | 91av久久久| 日本高清在线播放 | 精品国产乱码久久久久久久 | 最新黄色av网址 | 婷婷影视 | 美丽的小蜜桃2:美丽人生 | www.xxx在线观看 | 亚洲福利精品 | 日日骑夜夜操 | 国产成人久久久 | 久久55 | 亚洲国产精品成人综合色在线婷婷 | 日本国产在线观看 | 在线观看免费av网站 | 琪琪伦伦影院理论片 | 久久久永久久久人妻精品麻豆 | 怡红院男人的天堂 | 天天干天天操天天 | 夜夜操免费视频 | 国产又好看的毛片 | 在线日韩免费 | 一级黄色录像大片 | 欧美日韩在线直播 | 国产一区二区黑人欧美xxxx | 啄木乌欧美一区二区三区 | 一区二区在线精品 | 16一17女人毛片 | 亚洲一级网 | 97国产在线播放 | 日韩深夜视频 | 久久亚洲在线 | 一本大道东京热无码aⅴ | 日韩视频在线观看一区 | 在线成人免费观看 | 国产免费片 | 国产-第1页-浮力影院 | 欧美另类日韩 | 插吧插吧综合网 | 午夜影视在线观看 | 天堂网a| 人人插人人看 | 国产一区二区三区四区三区四 | 中文字幕毛片 | 丰满秘书被猛烈进入高清播放在 | 青青草官网 | 青草伊人久久 | 免费黄色av电影 | 51啪影院| 日本网站在线 | 成年人福利网站 | 在线日韩av| 国产日韩欧美视频 | av一级网站| 久久一区二区三区四区五区 | 精品视频久久久久久久 | 九九九九九伊人 | 综合国产精品 | 免费污片软件 | 亚洲永久精品国产 | 亚洲综合图片区 | 18av在线播放 | 在线观看中文 | 久久午夜无码鲁丝片 | 奇米影视欧美 | a毛片在线 | 国产女女做受ⅹxx高潮 | 久草免费在线 | 可以看黄色的网站 | 天天干夜夜爽 | 精品国产无码在线观看 | 黄色大片毛片 | 黄色特级网站 | 波多野结衣欲乱上班族 | 97国产成人无码精品久久久 | 中文字幕精品一区二区精 | 久久久社区 | www.欧美在线观看 | 三级在线网址 | 国产91av在线播放 | 好屌妞视频这里有精品 | 精品无码人妻一区二区三区品 | 欧美操操操 | 色综合色综合色综合 | 亚洲综合久久久 | 爱射综合| 久久精品超碰 | 亚洲精品久久久久久久久久吃药 | 国产av不卡一区二区 | 国产精品一区二区自拍 | 精品国产乱码久久久 | 精品国产乱码久久久久 | 精品视频在线看 | 亚洲av无码一区二区乱子伦 | 亚洲精品国产精品国自 | 福利社区一区二区 | 伊人网在线免费观看 | 国产伊人自拍 |