Streams

3 respostas
K

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
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();  
    }    
}

}

3 Respostas

K

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

dudaskank

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:

K

blz duda, deu certinho.

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

:smiley:

Criado 29 de janeiro de 2007
Ultima resposta 29 de jan. de 2007
Respostas 3
Participantes 2