¼Ò¼³ java.util ¼Ò½ºÄڵ堠jar¾ÐÃà  jarÆÄÀϾȿ¡ÆÄÀÏÃß°¡  

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ÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°Àº¹Ì´ÏÄÚµå
ÀÛ¼ºÀÚ:Àںϸâ¹ö ±è¿Ï±â