您的位置:首页 > 编程语言 > Java开发

java 从jar中读取文件 三种方法<Enumeration>

2012-12-28 14:55 477 查看
Sample1-利用Manifest文件读取jar中的文件

1.文件目录

test--

--a.text

--b.gif

2. Menifest文件内容:

Manifest-Version: 1.0

abc: test/a.txt

iconname: test/Anya.jpg

注意:manifest.mf文件最后一行要打一回车

Another Notification:

如果manifest文件内容是:

Manifest-Version: 1.0

Main-Class: com.DesignToolApp

Class-path: lib/client.jar lib/j2ee.jar

在MANIFEST.MF文件的最后,要留两个空行(也就是回车),才可以识别到Class-Path这一行,如果只有一个空行,那么只识别到Main- Class这一行。Class-Path中的库名用空格格开,使用和jar包相对的路径,发布时把jar包和其他用到的类库一起交给用户就可以了。

3.打jar包

test.jar

Java代码



String iconpath = jar.getManifest().getMainAttributes().getValue("abc");

InputStream in = jar.getInputStream(jar.getJarEntry(iconpath));

//Image img = ImageIO.read(in);

InputStreamReader isr = new InputStreamReader(in);

BufferedReader reader = new BufferedReader(isr);

String line;

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

System.out.println(line);

}

reader.close();

Sample2,读取JAR 文件列表及各项的名称、大小和压缩后的大小

Java代码



public class JarFileInfoRead {

public static void main (String args[]) throws IOException {

String jarpath="d://temp//test.jar";

JarFile jarFile = new JarFile(jarpath);

Enumeration enu = jarFile.entries();

while (enu.hasMoreElements()) {

process(enu.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 + "\t" + size + "\t" + compressedSize);

}

}

Sample3,读取JAR中 文件的内容

Java代码



public class JarFileRead {

public static void main (String args[])

throws IOException {

String jarpath="d://temp//test.jar";

JarFile jarFile = new JarFile(jarpath);

Enumeration enu = jarFile.entries();

while (enu.hasMoreElements()) {

JarEntry entry = (JarEntry)enu.nextElement();

String name = entry.getName();

//System.out.println(name);

if(name.equals("test/a.txt")){

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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: