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>>>