Ler e escrever em arquivos

5 respostas
K

JAVEM…



Pessoal eu preciso ler um arquivo, colocar todo o seu conteúdo em uma variável do tipo string, apagar o último caracter desta variável, acrescentar mais um texto e gravar novamente no arquivo.



Minha dificuldade é ler o arquivo, coloca-lo em uma variável e gravar novamente neste mesmo arquivo. Eu li a API java.io.* mas não ficou nada claro. Alguem pode me dar mais um Help??? :wink:



Valeus…

5 Respostas

V
E ,





//Conteudo


char[] conteudo





//Arquivo


File f = new File("c:\teste");   São duas barras mais o forum comeu uma :-]





//Ler


FileReader in = new FileReader(f);


in.read(conteudo);





//Remover ultimo caracter


conteudo.substring(0,conteudo.length()-1);





//Acrescentar texto


conteudo.concat("texto acrescentado");





//Gravar


FileWriter out = new FileWriter(f);


out.write(conteudo);








Essa é uma forma bem básica e pode requerer algumas adaptações nos códigos acima, como converter o array conteudo em string, mais acho que  pra quebrar um galho. Não esqueça de tratar as Exceções de IOException.








Atenciosamente


Volnei Granado Munhoz <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=9" title=":wink:" class="emoji" alt=":wink:">











[ Esta mensagem foi editada por: Volnei em 14-02-2003 16:46 ] 

[ Esta mensagem foi editada por: Volnei em 14-02-2003 16:47 ]
B

E também não esqueça de utilizar o método close() do FileReader e FileWriter quando terminar de usar.

Nunca é bom deixar esses objetos abertos.

J
Code:
  


import java.io.*;
public class Arquivo {
public static void main(String[] args) {

// Arquivo de entrada
File f = new File(&quot;Arquivo.java&quot;);
// Arquivo de saida
File f2 = new File(&quot;arquivo2.txt&quot;);
String tudo = &quot;&quot;;

try {
// Stream de entrada
FileInputStream in = new FileInputStream(f);
// Stream de saida
FileOutputStream out = new FileOutputStream(f2);

// Verifica numero de bytes que podem ser lidos
int bytesAvailable = in.available();
// array de bytes onde as informações lidas
// serão colocadas.
byte[] lido = new byte[bytesAvailable];

// verifica se o arquivo de entrada existe.
if(f.exists()) {
// Lê o arquivo de entrada.
int temp = in.read(lido);
// Se tiver lido o arquivo sem erro
// temp será diferente de -1
if(temp != -1) {
// A String que guarda todo o arquivo
// é concatenada com o que foi lido.
tudo += new String(lido);
// imprime conteudo do arquivo.
System.out.println(&quot;Conteudo Lido: &quot; + tudo);
// retira a ultimo caractere.
// Atencao: desconsidera caracters espaço(&quot; &quot;)
tudo = tudo.trim().substring(0,tudo.length() - 1);
// Acrescentando texto.
tudo += &quot;n jack_-_ganzha&quot;;
// Escreve no arquivo de saida.
out.write(tudo.getBytes());
} else {
System.out.println(&quot;Erro lendo o arquivo.&quot;);
}

} else {
System.out.println(&quot;O arquivo&quot;
+ f.getAbsolutePath()
+ &quot; nao foi encontrado.&quot;);
}

// fecha as streams
in.close();
out.close();
} catch(Exception ex) {
System.out.println(&quot;ERRO: &quot; + ex);
}
}
}




Obs.: Nesse codigo eu leio TODO o arquivo de uma vez só. Não é assim que deve ser. Mas, como estava um pouco apressado acabei fazendo na marra. Veja a documentação com mais cuidado para fazer de uma maneira melhor. Tambem só fiz um teste. Faça outros com um arquivo vazio ou inexistente.

Qualquer duvida... é só perguntar...

valeuz...
K
Valeu pelo ajuda pessoal…


mas aconteceu o seguinte nessas linhas:





//Remover ultimo caracter


conteudo.substring(0,conteudo.length()-1);





//Acrescentar texto


conteudo.concat("texto acrescentado");





Não é possível chamar substring(int, int) no tipo de matriz char[]


Não é possível chamar concat(String) no tipo de matriz char[]





E agora???  tentei converter pra String mas não deu certo


 :-[
V

Use



String cont = new String(conteudo);



//agora aplique esses métodos (substring e concat) na String cont



Volnei Granado Munhoz :smiley:

Criado 14 de fevereiro de 2003
Ultima resposta 14 de fev. de 2003
Respostas 5
Participantes 4