packagetest;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.util.jar.JarEntry;importjava.util.jar.JarOutputStream;importjava.util.jar.Manifest;/*** 将目标文件打包的测试程序
*@authorpony
* @bloghttp://pony.cnblogs.com* @date 2010-02-24
* 存在问题:entry文件名若使用unicode会出现乱码*/publicclassJarWriteTest {/*** 写文件到jar包中
* 例子中,读取一个文件,并将这个文件存储到jar包中的文件中
* 同时新建一个新的文件
*@paraminputFileName
*@paramoutputFileName
*@throwsException*/publicstaticvoidWritejar(String inputFileName, String outputFileName)throwsException {//Mainifest是jar包特有的说明文件,不能通过手动编写实现//它可以帮助你实现META-INF的目录保存了一个叫MANIFEST.MF的文件,记录版本,入口程序等信息Manifest manifest=newManifest();
manifest.getMainAttributes().putValue("Manifest-Version","1.0");
manifest.getMainAttributes().putValue("author","pony");
manifest.getMainAttributes().putValue("blog","http://pony.cnblogs.com");//JarOutputStream和JarInputStream是jar包生成时特有封装streamFile outfile=newFile(outputFileName);
JarOutputStream out=newJarOutputStream(newFileOutputStream(outfile),manifest) ;
File f=newFile(inputFileName);/************************将输入文件读取写入jar outputstream中**********************************///JarEntry 是jar包目录类JarEntry entry=newJarEntry(newString("file1".getBytes(),"utf-8"));//将目录加入到out中out.putNextEntry(entry);
FileInputStream in=newFileInputStream(f);byte[] buffer=newbyte[1024];intn=in.read(buffer);while(n!=-1) {
out.write(buffer,0, n);
n=in.read(buffer);
}
in.close();
out.closeEntry();//关闭目录//再做一个文件JarEntry entry2=newJarEntry("文件2");
out.putNextEntry(entry2);
out.write("你好啊!".getBytes());
out.closeEntry();
out.flush();//注意关闭输出文件流out.close();
}publicstaticvoidmain(String[] args) {try{
Writejar("c:\\1.txt","c:\\打包.jar");
}catch(Exception e) {//TODO Auto-generated catch blocke.printStackTrace();
}
}
}