Copiar arquivos TXT

4 respostas
L

Boa noite para todos. Preciso de um programa em que o usuário entra com o nome do arquivo de origem e com o nome do arquivo de destino. Ambos arquivos já existem e são txt. Em seguida o conteúdo do primeiro txt é copiado para o segundo. Achei um código parecido, fiz algumas modificações para o usuário entrar com o nome, mas ele não copia o conteúdo. Nunca mexi com manipulação de arquivos. O que estou fazendo de errado? Sou bem novato em programação.

import java.io.*;
import java.util.Scanner; 

class Test {
    static public void main(String[] args) {
    	
    	Scanner input = new Scanner (System.in);  
    		
        char[] buffer = new char[1024] ;
        int len ;
        String arq1, arq2;
        
		System.out.print ("Digite o primeiro arquivo: ");  
      	arq1 = input.next(); 
      	System.out.print ("Digite o segundo arquivo: ");  
      	arq2 = input.next();  
      		
        try {
            FileReader r = new FileReader(arq1) ;
            FileWriter w = new FileWriter(arq2) ;
            while( (len = r.read(buffer)) != -1 )
                w.write(buffer, 0, len) ;
            r.close() ;
            w.close() ;
        } catch(IOException e) {
            
        }
    }
}

4 Respostas

ViniGodoy

Esse método, além de muito eficiente, copia qualquer formato de arquivo:

public void copy(File s, File t) throws IOException {
   FileChannel in = new FileInputStream(s).getChannel();
   FileChannel out = new FileOutputStream(t).   
   in.transferTo(0, s.length(), out);
   in.close();
   out.close();
}
Vingdel

ViniGodoy:
Esse método, além de muito eficiente, copia qualquer formato de arquivo:

public void copy(File s, File t) throws IOException { FileChannel in = new FileInputStream(s).getChannel(); FileChannel out = new FileOutputStream(t). in.transferTo(0, s.length(), in.close(); out.close(); }

Linha 4 com um errinho, seria assim:

in.transferTo(0, s.length(), out);

Método completo seria assim:

public void copy(File s, File t) throws IOException { FileChannel in = (new FileInputStream(s)).getChannel(); FileChannel out = (new FileOutputStream(t)).getChannel(); in.transferTo(0, s.length(), out); in.close(); out.close(); }

lucas_henrard

COmo ficaria o codigo com esse metodo copy? o meu não esta funcionando

ViniGodoy

Ficaria:

try { copy(new File("Exemplo.txt"), new File("Exemplo2.txt")); catch (IOException e) { System.err.println("Impossível copiar"); e.printStackTrace(); }

Hoje em dia, o java já possui um método pronto para cópia de arquivos. Na classe Files:

try { Files.copy(Paths.get("Exemplo.txt"), Paths.get("Exemplo2.txt")); catch (IOException e) { System.err.println("Impossível copiar"); e.printStackTrace(); }

Criado 3 de setembro de 2010
Ultima resposta 3 de set. de 2015
Respostas 4
Participantes 4