Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [JAVA] Problema nel copiare Jar innestati

    Salve a tutti,
    ho questa situazione

    File Jar
    --File Jar2
    --File Jar3
    --dir
    ----file1
    ----file2.mp3
    ..
    installer
    --Installer.class
    ..

    devo copiare, tramite la classe Java installer, tutte le directory e il loro contenuto e i due file jar in una dir del pc.
    Le directory e i file vengono copiati tranquillamente, i jar , invece, vengono copiati, e quando li vado ad aprire mi dice che è danneggiato. La struttura interna è presente però cliccando sul singolo file mi diche che il CRC è errato ed inoltre gli mp3 vengono si copiati, ma il suono risulta distorto..
    Segue il codice... che sbaglio?

    codice:
    InputStreamReader is=new InputStreamReader(jar.getInputStream(jar.getJarEntry(nome)));
                                OutputStreamWriter oos=new OutputStreamWriter(new FileOutputStream(tmpFile));
                                
                               char read[]=new char[1];
                                while(is.read(read)!=-1)
                                    oos.write(read);
                                oos.flush();
                                is.close();
                                oos.close();
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    non puoi copiare i file binari come file di testo, interpretando quindi i byte come dei char.

    Codice PHP:
    import java.io.*;

    public 
    void copy(String originalFileString newFilethrows IOException {
        
    File inputFile = new File(originalFile);
        
    File outputFile = new File(newFile);
        
    InputStream finput = new BufferedInputStream(new FileInputStream(inputFile));
        
    OutputStream foutput = new BufferedOutputStream( new FileOutputStream(outputFile));
        
    byte[] buffer = new byte[1024 500];
        
    int bytes_letti 0;
        while((
    bytes_letti finput.read(buffer)) > 0)
            
    foutput.write(buffer0bytes_letti);
        
    finput.close();
        
    foutput.close();

    oppure

    Codice PHP:
    import java.nio.channels.*;
    import java.io.*;


      public 
    void copyFile(File sfileFile dfilethrows Exception
      
    {
         
    FileChannel source = new FileInputStream(sfile).getChannel();
         
    FileChannel dest = new  FileOutputStream(dfile).getChannel();
         
    source.transferTo(0source.size(), dest);
         
    source.close();
         
    dest.close();
      } 

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #3
    Infatti
    Ho risolto in questo modo
    codice:
    DataInputStream is=new DataInputStream(jar.getInputStream(jar.getEntry(nome)));
                            DataOutputStream oos=new DataOutputStream(new FileOutputStream(tmpFile));
    byte read[]=new byte[1];
    while(is.read(read)!=-1)
       oos.write(read);
    oos.flush();
    is.close();
    oos.close();
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  4. #4
    E' tutto il giorno che programmo e mi stò bruciando il cervello Pensare che il char ha la stessa dimensione del byte ...
    VVoVe: VVoVe: VVoVe: VVoVe:
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  5. #5
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    non è qustione di dimensione ma di interpretazione. Tieni presente comuqnue che il modo in cui hai implementato il metodo è piuttosto inefficinete perchè non usi stream bufferizzati e leggi un byte alla volta effettuando tanti accesssi al disco quanti sono i dbyte dei file

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  6. #6
    Si questo lo so, ma stavo cercando di risolvere il "problema"
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.