失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > EAR JAR文件的读写

EAR JAR文件的读写

时间:2023-03-08 13:06:54

相关推荐

EAR JAR文件的读写

1. 读取Jar包里的MANIFEST.MF文件(读取EAR包里的文件相同的操作),大概步骤如下:

1)用Jar包的绝对路径作为构参,New一个JarFile类

2)用Jar包里的一个文件文件的相对路径作为参数,调用JarFile类的一个getJarEntry的方法,得到一个JarEntry类

3)再用这个Entry类作为参数,调用JarFile的getInputStream文法,得到这个文件的InputStream

4)接下来对InputSteam的操作与普通读取文件的方法相同

Java代码StringBuffersb=newStringBuffer(); try { JarFiletestJarFile=newJarFile("c:/test/common.jar"); JarEntryjarEntry=testJarFile.getJarEntry("META-INF/MANIFEST.MF"); InputStreamjarEntryInputStream=testJarFile.getInputStream(jarEntry); BufferedReaderbufferedReader=newBufferedReader(newInputStreamReader(jarEntryInputStream)); StringreadLine=null; while((readLine=bufferedReader.readLine())!=null) { sb.append(readLine); sb.append("\r\n"); } System.out.println(sb.toString()); } catch(IOExceptione) { e.printStackTrace(); }

2. 输出ear包里的jar到其它目录,与从Jar包读取相似,操作步骤如下

1)用Ear包的绝对路径作为构参,New一个JarFile类

2)用目标Jar包的相对路径作为参数,调用JarFile的getJarEntry方法,得到一个JarEntry类

3)用这个JarEntry作为参数,调用JarFile的getInputStream方法,取得这个Jar包文件的InputStream

4)接下来对InputStream的操作与普通写文件操作相同

Java代码try { JarFiletestEarFile=newJarFile("C:/test/test.ear"); JarEntryjarEntry=testEarFile.getJarEntry("target.jar"); InputStreamjarEntryInputStream=testEarFile.getInputStream(jarEntry); FileOutputStreamfileOutputStream=newFileOutputStream("c:/test/target.jar",true); intb=0; while((b=jarEntryInputStream.read())!=-1) { fileOutputStream.write(b); } fileOutputStream.flush(); fileOutputStream.close(); } catch(IOExceptione) { e.printStackTrace(); }

3. 替换Ear包里的某些Jar包, 相对之前几个实例,这个会相对复杂一些,步骤如下:

1)创建一个目标的Ear包File类,然后再得到一个JarOutputStream,接下来会往这里添加需要的Jar包

2)读取源Ear包,然后JarFile类的entries()方法遍历源Ear包的所有文件

3)判断要替换的Jar文件,跳过它,其它的文件马上写入目标的Ear包里

4)关闭源Ear包

5)建立要替换进来的Jar包的JarEntry,用FileInputStream类读取这个Jar包,然后马上写进目标Ear包里

6)Flush JarOutputStream

7)依次关闭其它仍未关闭的资源

Java代码try { //先创建目标的ear包,再New一个JarOutputStream,以备输出目标Ear包之用 FiletargetEarFile=newFile("c:/test/target.ear"); targetEarFile.createNewFile(); FileOutputStreamtargetEarFileOutputStream=newFileOutputStream(targetEarFile); JarOutputStreamnewJarOutputStream=newJarOutputStream(targetEarFileOutputStream); bytebuffer[]=newbyte[100]; intbytesRead; //循环读取源Ear包里除开要替换的Jar包外的其它文件,并将这些文件写到目标Ear包里去 JarFilesourceEarFile=newJarFile("c:/test/sourceEar.ear"); EnumerationsourceEarJarEnties=sourceEarFile.entries(); while(sourceEarJarEnties.hasMoreElements()) { JarEntryjarEntry=(JarEntry)sourceEarJarEnties.nextElement(); //要替换Jar包,跳过它 if(jarEntry.toString().equals("sourceJar.jar")) { continue; } //其它文件马上写到目标Ear包里去 InputStreamjarInputStream=sourceEarFile.getInputStream(jarEntry); newJarOutputStream.putNextEntry(jarEntry); while((bytesRead=jarInputStream.read(buffer))!=-1) { newJarOutputStream.write(buffer,0,bytesRead); } newJarOutputStream.flush(); jarInputStream.close(); } //到这里源Ear包己经没有用了,close掉 sourceEarFile.close(); JarEntrytargetJarEntry=newJarEntry("targetJar.jar"); newJarOutputStream.putNextEntry(targetJarEntry); FileInputStreamtargetJarFileInputStream=newFileInputStream("c:/test/targetJar.jar"); while((bytesRead=targetJarFileInputStream.read(buffer))!=-1) { newJarOutputStream.write(buffer,0,bytesRead); } newJarOutputStream.flush(); targetJarFileInputStream.close(); newJarOutputStream.close(); targetEarFileOutputStream.close(); } catch(Exceptionex) { ex.printStackTrace(); }

如果觉得《EAR JAR文件的读写》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。