Streams

Estou fazendo um código para ler um arquivo doc e gerar uma cópia identica. Porém, meu código gera somente um pedaço do arquivo igual e o resto ele traz tudo bagunçado. Alguem pode me ajudar?

Olhem o anexo

[code]

public class Copiando {

public static void main(String args[])
{
try
{
/** Defino o arquivo que será lido */
FileInputStream fileEntrada = new FileInputStream(“C:\Des\Arquivos e fluxos.doc”);

  /** Atribuo à classe que irá ler os arquivos em bytes primitivos */
  DataInputStream data = new DataInputStream(fileEntrada);
  
  /** Instancio a classe de gravação apontando o nome do arquivo a ser criado e sua extensão*/
  FileOutputStream fileSaida = new FileOutputStream("C:\\Des\\lixo\\TestandoGravacao.doc");
  
  /** Classe responsável pela gravação dos arquivos */
  PrintStream p = new PrintStream(fileSaida);
  
  String texto = null;
  
  /** Verifico se existe o arquivo não está em branco, se tiver cheio, vou percorrer todas os caracteres */
  while(data.available() != 0 )
  {
      /** Le o arquivo linha por linha */
      System.out.println(data.readLine());    
      texto = data.readLine();
      p.print(texto);
  }
}
catch (FileNotFoundException e) 
{
  e.printStackTrace();  
}
catch (IOException e) 
{
  e.printStackTrace();  
}    

}

}[/code]

Esqueci de falar que o erro está na metade do arquivo pra frente

Talvez o erro esteja em usar rotinas de leitura e escrita de texto em arquivo binário…

Mas enfim, tem um jeito mais fácil de fazer, usando o nio! Olha só (http://www.guj.com.br/posts/list/14355.java)

FileChannel from = new RandomAccessFile("from.txt", "r").getChannel(); FileChannel to= new RandomAccessFile("to.txt", "w").getChannel(); from.transferTo(0, from.size(), to);

:smiley:

blz duda, deu certinho.

Ficou mto mais prático…reduziu mtas linhas de código

:smiley: