Oi pessoal, alguém poderia me ajudar num probleminha?
O caso é o seguinte preciso fazer um programa em java que faça um número x cópias de um arquivo usando threads. (Callable)
Eu fiz o seguinte código mas não sei se a lógica está correta e ainda não achei uma maneira de fazer ele criar as cópias.
class CopiaArquivo implements Callable<File>{
File src;
File dst;
void copy(File src, File dst) throws IOException {
this.src = src;
this.dst = dst;
}
@Override
public File call() throws Exception {
return result();
}
private File result(){
try{
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dst); // Transferindo bytes de entrada para saída
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
catch(Exception ee){
System.out.println("Erro ao copiar arquivo");
}
return dst;
}
}
public class CopiaArq {
/**
* @param args the command line arguments
*/
public static void main(String[] args){
// TODO code application logic here
try{
FileOutputStream arquivo = new FileOutputStream("arquivo.txt");
PrintWriter pr = new PrintWriter(arquivo);
pr.println("Hello World!!");
pr.close();
arquivo.close();
}
catch(Exception e){
System.out.println("Erro ao escrever arquivo!!!");
}
ExecutorService e = Executors.newFixedThreadPool(2);
ExecutorCompletionService<File> completionService = new ExecutorCompletionService<>(e);
ArrayList<Future<File>> futures = new ArrayList<>();
futures.add(e.submit(new CopiaArquivo()));
}
}