Eu gostaria de adicionar o conteudo ao fim de um arquivo.
No entanto gostaria de saber se existe uma maneira facil de faze-lo
sem ter que usar while ou coisas do genero.
O problema neste código é que eu não sei como instanciar um CharBuffer pra poder
ir adicionando conteudo ao arquivo.
Alguém pode explicar como utilizar o CharBuffer ou
então postar algum código simples pra ler o conteudo de
um arquivo e poder adicionar conteudo e gravar em disco
sem ter que ficar usando while ou coisa do tipo?
try {
String nomeArquivo = "c:\arquivos\arquivo.txt";
FileReader fin = new FileReader(nomeArquivo);
BufferedReader buf = new BufferedReader(fin);
String linha;
StringTokenizer descLinha;
while ((linha = buf.readLine()) != null) {
descLinha = new StringTokenizer(linha, "\n");
descLinha.nextToken();
...
}
} catch (FileNotFoundException e) {
throw new Exception("Não foi possível abrir o arquivo especificado.\nCertifique-se de que o caminho do arquivo config.ini no fonte está correto.");
} catch (IOException e) {
throw new Exception("Não foi possível abrir o arquivo especificado (IOException).");
} catch (Exception e) {
throw new Exception("Não foi possível abrir o arquivo especificado (Exception).");
}
e para escrever: String nomeArquivo = null;
try {
File dir = new File("C:\arquivos\");
dir.mkdirs();
nomeArquivo = "C:\arquivos\arquivo.txt";
FileWriter fout = new FileWriter(nomeArquivo);
PrintWriter prt = new PrintWriter(fout);
StringBuffer arq = new StringBuffer();
arq.append("valor1"+"valor2"+"\n");
prt.println(arq.toString());
prt.close();
} catch (Exception e) {
throw e;
}
de alguma forma eu uso looping mas nao acho taaao lendo nao.
Espero que possa ajudar!
[]'s
Marky.Vasconcelos
rafael.espiritosanto:
Pow... esse código tá sobrescrevendo o conteúdo. Daí eu só consigo registrar a última operacao
Em C agente podia abrir os arquivos no modo APEND, isto é todo conteúdo era adicionado no final do arquivo, deve ter algo parecido em java…
rafael.espiritosanto
Pois é! Tá acontecendo algo muito estranho.
Porque o arquivo tem conteúdo, mas quando chega na parte do loop o código passa direto.
Até modifiquei pra como no exemplo acima mas nada…
peguei da API…
boolean createNewFile()
Atomically creates a new, empty file named by this abstract pathname if and only if a file with this name does not yet exist.
é o seguinte… acho que vc deve tirar essa linha: file.createNewFile();
assim, vc passa pra proxima linha, o file que vc instanciou da String nomeArquivo tendeu?!
Creio também que vc nao irá precisar de utilizar o builder não…
o arquivo é de texto certo!?
rafael.espiritosanto
Está linha não é a causa do problema.
Se eu tirar esta linha, quando o programa rodar pela primeira vez vai dar exception pois o arquivo
não existe. Este método cria o arquivo pra mim na primeira vez.
O erro por incrível que pareça é ridículo. Eu instanciava o FileWriter antes de ler o conteúdo
do arquivo, daí ele apagava todo o conteúdo e só gravava a última operação.
Só instanciar o FileWriter depois de já ter lido o conteúdo do arquivo.