Criptografia

11 respostas
R

:?: Estou lendo um arquivo txt para realizar a criptografia digital, de acordo com o PAF-ECF. Gostaria de saber se o método abaixo consegue ler os espaços vazios e enter. A criptografia contará os espaços vazios e enter junto com o conteúdo.

private void lerArquivo(){
        try{
            FileReader reader = new FileReader("c:\\EspelhoMFD.TXT"); 
            BufferedReader leitor = new BufferedReader(reader);
            String linha = "";
            while(leitor.ready()) {
                linha += leitor.readLine();
             
               
            }
            leitor.close();
            reader.close(); 
            this.arquivo =  linha;
            
           
        }catch(Exception exc){
            exc.printStackTrace();
        }
    }

11 Respostas

T

Não; para efeitos de criptografia, trabalhe com arrays de bytes e FileInputStream.

R

A criptografia está tranqüilo, eu não sei se utilizando aquele método consigo passar para o atributo this.arquivo os espaços e as quebras de linhas.

R

Você está acumulando as linhas lidas do arquivo na variável linha sem usar qualquer caractere delimitador. Assim, você vai perder as quebras de linha e linhas vazias.

R

Ah, sim: como você está acumulando o conteúdo do arquivo numa única variável, pode haver problemas quando o arquivo for muito grande. É melhor processar essas informações por blocos, para aproveitar melhor a memória disponível.

R

Você pode citar para mim algum delimitador em Java para eu passar as quebras de linha e os espaços vazios para a variável.

R

Reforço a dica do thingol para que você use arrays de bytes e FileInputStream, pois ao fazer isso você simplesmente não precisará se preocupar com o conteúdo do arquivo. Se você realmente quiser usar um delimitador, uma opção possível é \r\n (a clássica quebra de linha dos ambientes MS-DOS e Windows), mas gostaria de deixar bem explícito que considero que esse NÃO é o melhor caminho.

R

Para eu passar os valores em blocos vou precisar saber a quantidade de bytes contidos no arquivo, certo? E como faço isso?

R

Use o método File.length() :

http://java.sun.com/javase/6/docs/api/java/io/File.html#length()

R

Estou tentando agora com ArrayList, ou seria melhor criar um Array do tipo char e introduzir byte por byte?

R

Percorra o arquivo de entrada e extraia os blocos de dados contidos nele usando FileInputStream.read() :

http://java.sun.com/javase/6/docs/api/java/io/FileInputStream.html#read(byte[])

Basta criar um array de bytes e usar o método read() repetidamente, até alcançar o fim do arquivo.

T

Digamos que o arquivo seja pequeno (normalmente é o caso). Então você pode fazer:

File f = new File ("c:\\arquivo\\texto.txt");
int length = (int) f.length();
byte[] bytes = new byte[length];
InputStream is = null;
try {
    is = new FileInputStream (f);
    is.read (bytes);
} finally {
    if (is != null) try { is.close(); } catch (IOException ex) {}
}

Ao final deste código, o array de bytes “bytes” irá conter os bytes do arquivo, sem tirar nem pôr.

Criado 8 de junho de 2009
Ultima resposta 8 de jun. de 2009
Respostas 11
Participantes 3