Leitura de arquivo

3 respostas
jfnando

Bom dia!!

estou fazendo uma leitura de arquivo dessa forma:

FileReader reader = new FileReader(arquivo);
        BufferedReader in = new BufferedReader(reader);
        String str;
        
        while ((str = in.readLine()) != null ) {
            System.err.println("SQL: " + str);
            executaScript(str);
        }
        in.close();
        reader.close();

dentro desse arquivo tem uma linha com enter, antes de gerar o arquivo eu tento dar uma replace no enter
e subtituindo por um simbolo… no local do enter ele ate coloca o simbolo mas ainda mantem o enter pq
ao rodar o scritp, tah mandando sobre a linha ate o enter… depois em outra linha o resto.

já vi uns post que o readLine() ignora o enter… mas no meu caso nao tah funcionando, talvez eu esteja fazendo algo errado.

se alguem puder me ajudar, agradeço desde já.

Valeu

3 Respostas

fbeli

O enter não é o final de linha? Ele lê a linha toda.

cassio

Essa coisa do enter acaba gerando caracteres diferentes de um sistema operacional para outro.
:arrow: Windows: Usa em hexadecimal a sequência 0D 0A (13 10 em decimal), ou seja, carriage return e depois um new line.
:arrow: Linux: Usa somente o 0A - new line

Se você estiver usando Windows, pode ver que o enter representa então dois caracteres… Neste caso você precisa tomar cuidado com esse seu replace…

Se o seu SQL dentro do arquivo estiver separado em várias linhas, você vai ter que colocar uma marcação no fim ou no início dessa sentença e ir concatenando as linhas enquanto não encontrar essa marcação (acho que é isso que você quer fazer né?)

jfnando

Consegui pessoal,

valeu pela Ajuda…

estava faltando eu subtituir o retorno (char)13, estava fazendo somente do enter (char)10…

nesse arquivo tenho uma instrucao sql de insert por exemplo…

aonde tem o enter eu subtituo por 2 simbolos entao (10,13) e depois facho repalce novamente

concatenando o char para inserir no banco. Exemplo: insert into teste values (‘teste’||chr(10)||chr(13)||‘teste’)… dai ele insere certo
o registro e é possivel ler a linha
no arquivo fica assim: insert into teste values (‘teste£¤teste’)

valeu!!!1

Criado 28 de novembro de 2007
Ultima resposta 28 de nov. de 2007
Respostas 3
Participantes 3