-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathP0907Copy.java
36 lines (34 loc) · 1.3 KB
/
P0907Copy.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class P0907Copy {
public static void copyFile(String origem, String destino) {
// abre streams de entrada e saida com ARM
try ( BufferedInputStream orig = new BufferedInputStream(
new FileInputStream(origem));
BufferedOutputStream dest = new BufferedOutputStream(
new FileOutputStream(destino)) ) {
int disp; // no. bytes disponíveis
while ((disp = orig.available()) > 0) { // se dados disponíveis
byte dados[] = new byte[disp]; // cria array para dados
orig.read(dados, 0, disp); // lê todos os dados
dest.write(dados, 0, disp); // grava todos os dados
}
dest.flush(); // garante gravação
} catch (IOException e) { // em caso de erro
System.out.println("Copia nao foi possivel.");
e.printStackTrace();
} // orig.close() e dest.close() implícitos
}
public static void main (String a[]) {
if (a.length < 2) { // checa argumento com nomes dos arquivos
System.out.println("uso:\njava J0907Copy <arquivoFrom> <arquivoPara>");
} else {
System.out.printf("Copiando de '%s' para '%s'...", a[0], a[1]);
copyFile(a[0], a[1]);
System.out.println("OK");
}
}
}