Ajuda para escrever dados em um arquivo .properties

3 respostas
L

Pessoal estou tentando implementar um backup/restore em um sistema,o que eu quero he que quando o usuario clickar em um botao de backup ele atribua um nome para o arquivo de backup,e efetue este backup e salve no servidor em uma pasta especifica e depois pegue este nome e escreva em um arquivo de propriedades,vejam como estou tentando fazer:

public String realizaBackup() {
		Date data = new Date();
		DateFormat df = new SimpleDateFormat("dd-MM-yyyy-HH-mm-ss");
		String nome = "backup" + df.format(data.getDate() + data.getTime());		
		Runtime r = Runtime.getRuntime();
		try {
			Process p = r
					.exec(" \"C:\\Arquivos de programas\\PostgreSQL\\8.1\\bin\\pg_dump.exe\" -i -h localhost -p 5432  "
							+ " -U postgres -F c -b -v -f \"C:\\backup\\"
							+ nome + "\" teste1");
			File file = new File("/c:/backup.properties");
			System.out.println("existe s/n........" + file.createNewFile());
			FileWriter fw = new FileWriter(file);
			BufferedWriter bw = new BufferedWriter(fw);
			FileReader fl = new FileReader(file);
			BufferedReader bf = new BufferedReader(fl);
			String s;
			int i = 1;
			while ((s = bf.readLine()) != null) {
				i++;
			}
			bw.append(i + "=" + nome);
			bw.flush();
			fw.flush();

			return "backup_ok";
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
		return null;

	}

se alguem puder ajudar fico grato.
Obrigado.

3 Respostas

L

Com este codigo consigo colocar uma linha no arquivo,mas quando executo a segunda vez ele sobrescreve a primeira linha e ele deveria deixar a linha ja inserida e inserir a outra o que pode estar errado ou o que esta faltando?

lcegatti

Leia todo o arquivo e armezene em um StringBuilder, após isso concatene todo o conteudo com o novo adicional:

String s;
                        StringBuilder conteudo = new StringBuilder();
			int i = 1;
			while ((s = bf.readLine()) != null) {
				i++;
                                conteudo.append(s);
			}
                        conteudo.append(i + "=" + nome);
			bw.append(conteudo.toString());
			bw.flush();
			fw.flush();

			return "backup_ok";
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
		return null;

	}

Toda a escrita em um arquivo ele sobrescreve o conteudo do mesmo, e acho que dessa maneira ele não ira pular linha na hora de escrever.

[]'s

L

Obrigado pela dica vou testar,consegui assim tbm:

FileWriter fw = new FileWriter(new File("/c:/backup.properties"),true);			
			FileReader fl = new FileReader(new File("/c:/backup.properties"));
			BufferedReader bf = new BufferedReader(fl);
			PrintWriter pw = new PrintWriter(fw);
			
			
			
			String s;
			int i = 1;
			while ((s = bf.readLine()) != null) {
				i++;				
			}			
			pw.println(i + "=" + nome);
			
			fw.flush();
			pw.flush();
			fw.close();
			pw.close();

passando true para o construtor de FileWriter();
Obrigado t+.

Criado 15 de setembro de 2008
Ultima resposta 15 de set. de 2008
Respostas 3
Participantes 2