Pessoal, eu tenho um arquivo de contantos, onde eu preciso editar os contatos que estao dentro, para isso eu utilizo o RandomAccessFile, onde eu leio todo o arquivo, e regravo utilizando um replace na linha que eu preciso que seja alterada...
até ai beleza, o que ta me deixando intrigado é uns caracteres que o RandomAccessFile está gravando....
a estrutura do arquivo é a seguinte...
luiz henrique ;csi;analista ;06/12/1987;Almirante Pedro Álvares Cabral;PR;São José dos Pinhais;83040530;Boneca do Iguaçu
para gravar é uma maravilha, uso o file writer e fica igualzinho essa linha de cima... ai quando eu resolvo editar a linha com o RandomAccessFile olha só os caracteres que ele coloca
gabriela henrique;csi;analista;06/12/1987;Almirante Pedro ÃÂÃÂ?lvares Cabral;PR;SÃÂão JosÃÂé dos Pinhais;83040530 ;Boneca do IguaÃÂçu
a estrutura esta sendo gravada corretamente o problema são esses caracteres do mal...
segue o trecho de codigo responsavel por essa folia...
public void editarContato(int pos, String nomeAltera ,String nomeAntigo, String novaEmpresa, String novoCargo, String novoAniversario, String novoLogradouro,String novoEstado, String novaCidade,String novoCep, String novoBairro) throws ParseException {
BufferedReader leitor = null;
try {
// File f = new File("resources/cursos2.txt");
// leitor = new BufferedReader(new FileReader(f));
ArrayList<String> linhas = new ArrayList<String>();
RandomAccessFile arquivo =
new RandomAccessFile("resources/contatos.txt", "rw");
String linha = null;
while ((linha = arquivo.readLine()) != null) {
String[] elems = linha.split(";");
String nome = elems[0];
String empresa = elems[1];
String cargo = elems[2];
String aniversario = elems[3];
String logradouro = elems[4];
String estado = elems[5];
String cidade = elems[6];
String cep = elems[7];
String bairro = elems[8];
String formato = "dd/MM/yyyy";
Date data = new SimpleDateFormat(formato).parse(aniversario);
//
System.out.println(linha);
if (nome.equals(nomeAntigo)) {
// cursos.add(new Curso(curso, centroLocal, site));
String linhareescrita = null;
linhareescrita = linha.replaceAll(linha,nomeAltera+ ";"+ novaEmpresa + ";" + novoCargo + ";" + novoAniversario + ";"+ novoLogradouro + ";" + novoEstado + ";" + novaCidade + ";" + novoCep + ";" + novoBairro);
System.out.print(linhareescrita);
linhas.add(linhareescrita);
// fw.write(linhareescrita + "\n");
}else
//fw.write(linha + "\n");
linhas.add(linha);
// System.out.println(linha);
}
FileWriter fw = new FileWriter("resources/contatos.txt");
for (int i = 0; i < linhas.size(); i ++){
System.out.println(linhas.get(i));
if (i >0 ){ fw.append(System.getProperty("line.separator"));
}
fw.write(linhas.get(i));
// System.out.println(linhas.get(i));
}
fw.close();
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
if (leitor != null) {
try {
leitor.close();
} catch (IOException e) { /* ignorado */ }
}
}
}
abraço a todos...