jarÆÄÀÏ ¾È¿¡ ÆÄÀÏ Ãß°¡Çϱâ
JarTest3.java
import java.io.*;
import java.util.*;
import java.util.zip.*;
import java.util.jar.*;
public class JarTest3{
public static void main(String[] args) throws IOException{
String jarName = args[0];
String fileName = args[1];
File jarFile = new File(jarName);
File tempJarFile = new File(jarName + ".tmp");
JarFile jar = new JarFile(jarFile);
System.out.println(jarName + " opened.");
boolean jarUpdated = false;
try{
Manifest jarManifest = jar.getManifest();
JarOutputStream tempJar=new JarOutputStream(new FileOutputStream(tempJarFile));
byte[] buffer = new byte[1024];
int bytesRead;
try{
FileInputStream file = new FileInputStream(fileName);
try{
JarEntry entry = new JarEntry(fileName);
tempJar.putNextEntry(entry);
while((bytesRead = file.read(buffer)) != -1){
tempJar.write(buffer, 0, bytesRead);
}
System.out.println(entry.getName() + " added.");
}finally{
file.close();
}
for(Enumeration entries = jar.entries(); entries.hasMoreElements(); ){
JarEntry entry = (JarEntry) entries.nextElement();
if (! entry.getName().equals(fileName)) {
InputStream entryStream = jar.getInputStream(entry);
tempJar.putNextEntry(entry);
while ((bytesRead = entryStream.read(buffer)) != -1) {
tempJar.write(buffer, 0, bytesRead);
}
}
}
jarUpdated = true;
}catch(Exception ex){
System.out.println(ex);
tempJar.putNextEntry(new JarEntry("stub"));
}finally{
tempJar.close();
}
}finally{
jar.close();
System.out.println(jarName + " closed.");
if(!jarUpdated){
tempJarFile.delete();
}
}
if(jarUpdated){
jarFile.delete();
tempJarFile.renameTo(jarFile);
System.out.println(jarName + " updated.");
}
}
}
C:\util>javac JarUpdate.java
C:\util>java JarUpdate jarTest01.jar jarTest02.zip
jarTest01.jar opened.
jarTest02.jar added.
jarTest01.jar closed.
jarTest01.jar updated.
ÀÌ ¿¹Á¦ÀÇ javaÆÄÀÏÀÌ ÀÖ´Â Æú´õ¿¡ jarTest01.jar¿Í jarTest02.jarÆÄÀÏÀÌ ÇÔ²² ÀÖ¾î¾ß¸¸ ÇÕ´Ï´Ù.
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°Àº¹Ì´ÏÄÚµå ÀÛ¼ºÀÚ:Àںϸâ¹ö ±è¿Ï±â |