non lo ho postato prima perchè mancavano alcune cose, ora posto il sorgente e spero in qualche vostra idea.

c'è qualche modo per ottimizzare un po' il codice, soprattutto nella parte grafica???

grazie


FileSplitter.java (classe astratta estesa da JoinFile e SplitFile)

codice:
import java.io.File;

public abstract class FileSplitter{
	public static int BUF_SIZE = 4096;
	public static final String EXTENSION = ".part";
	protected String pathIn;
	protected String pathOut;
	
	/**costruttore completo della classe
	 *@param pathInput path del file di input
	 *@param pathOutput path del file di output
	 */
	public FileSplitter(String pathInput,String pathOutput){
		pathIn=pathInput;
		pathOut=pathOutput;
	}//costruttore
	
	/**la funzione ritorna un esito in base all' esistenza o meno del file
	 *@param nomeFile  nome del file da valutare
	 *@return esito
	 */
	public static boolean fileExists(String nomeFile){
           return (new File(nomeFile)).exists();
	}//fileExists
	
	/**la funzine ritorna le dimensioni del file indicato
	 *@param nomeFile nome del file di cui si vogliono sapere le dimensioni
	 *@return dimensioni del file in byte
	 */
	public static long fileSize(String nomeFile){
		return (new File(nomeFile)).length();
	}

	//usata solo in fase debug
	public void println(char[] c){
		System.out.println(c);
	}
}

JoinFile.java
codice:
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.File;

public class JoinFile extends FileSplitter{
    private String nomeFileOut;
    
    
	/**Costruttore completo
	 *@param nomeOut nome file di output
	 *@param pathIn path file input 
	 *@param pathOut path file output
	 */
	public JoinFile(String nomeOut,String pathIn,String pathOut){
		super(pathIn,pathOut);
		nomeFileOut=nomeOut;
	}//costruttore
	
	public void join() throws IOException{
		int numFile=0,car;
		BufferedInputStream in= new BufferedInputStream(null,BUF_SIZE);
		BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(pathOut+nomeFileOut),BUF_SIZE);
        
         while(fileExists(pathIn+numFile+EXTENSION)){
         	in = new BufferedInputStream(new FileInputStream(pathIn+numFile+EXTENSION),BUF_SIZE);
         	while((car=in.read())!=-1)
         	   out.write(car);
         	numFile++;
         	in.close();
         }//end while
        
      out.flush();
      out.close();   
	}//join
}//JoinFile

SplitFile.java
codice:
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.File;

public class SplitFile extends FileSplitter{
	private String nomeFileIn;
	
	
	/**Costruttore completo
	 *@param nomeIn nome file di input
	 *@param pathIn path file input 
	 *@param pathOut path file output
	 */
	 public SplitFile(String nomeIn,String pathIn,String pathOut){
	 	super(pathIn,pathOut);
		nomeFileIn=nomeIn;
	 }//costruttore
	
	
	public void split(long splitSize) throws IOException{
		 int car;
		 int i=0,numFile=0; 
         BufferedInputStream in =new BufferedInputStream( new FileInputStream(pathIn+nomeFileIn),BUF_SIZE);
         BufferedOutputStream out=  new BufferedOutputStream(new FileOutputStream(pathOut+numFile+EXTENSION),BUF_SIZE);
         
         while((car=in.read())!=-1){
         	
           if(i>=splitSize){
              i=0;
              out.flush();
              out.close();
              numFile++;
              out =   new BufferedOutputStream(new FileOutputStream(pathOut+numFile+EXTENSION),BUF_SIZE);
           }//end if
           out.write(car);
           i++;
         }
         out.flush();
         in.close();
         out.close();
	}//split
	
}//SplitFile


Segue post 2>>>