Não consigo copiar um arquivo

3 respostas
C

E aê galera…

Estou precisando copiar um arquivo .xml de um determinado diretório para
outro dentro do mesmo drive. Alguém pode dar um exemplo de como fazer?

Estou usando

FileReader arqOriginal = new FileReader( new File( "arquivoDeOrigem" ) );

mas não consigo gravar… o que pode estar faltando!?

No aguardo,
Valeu

3 Respostas

T

Esta classe exemplifica como copiar um arquivo de um lugar para outro, desde que o arquivo original esteja fechado.

import java.io.*;
import java.nio.*;
import java.nio.channels.*;

class TestCopy {
    public static void main(String[] args) throws Exception {
        File fIn = new File (args[0]); // arquivo de entrada
        File fOut = new File (args[1]); // arquivo de saída
        FileInputStream fis = new FileInputStream (fIn);
        FileOutputStream fos = new FileOutputStream (fOut);
        FileChannel fcIn = fis.getChannel();
        FileChannel fcOut = fos.getChannel();
        fcOut.transferFrom (fcIn, 0, fIn.length());
        fos.close();
        fis.close();
    }
}
C
thingol:
Esta classe exemplifica como copiar um arquivo de um lugar para outro, desde que o arquivo original esteja fechado.
import java.io.*;
import java.nio.*;
import java.nio.channels.*;

class TestCopy {
    public static void main(String[] args) throws Exception {
        File fIn = new File (args[0]); // arquivo de entrada
        File fOut = new File (args[1]); // arquivo de saída
        FileInputStream fis = new FileInputStream (fIn);
        FileOutputStream fos = new FileOutputStream (fOut);
        FileChannel fcIn = fis.getChannel();
        FileChannel fcOut = fos.getChannel();
        fcOut.transferFrom (fcIn, 0, fIn.length());
        fos.close();
        fis.close();
    }
}

Blz thingol,

O bom é que tbem serve para arq binário, Ok!?

T

Tanto faz se o arquivo é binário ou não. Ele será copiado inalterado. O único problema é que não dá para interromper a cópia no meio, mas a rotina “transferFrom” normalmente garante a cópia mais rápida que pode ser feita via sistema operacional. (É mais rápido que escrever um programa em C que faça isso e não use APIs específicas do Windows ou do Unix para copiar arquivos).

Criado 21 de julho de 2006
Ultima resposta 21 de jul. de 2006
Respostas 3
Participantes 2