Gravando em arquivo txt

Seguinte fiz um codigo apra ler um arquivo txt, e gravar alguns dados simples, estou fazendo alguns testes, e no arquivo não grava mais de um registro, ele sobrescreve o antigo, ficando como novo, tbm gostaria de saber como fazer pro programa criar o arquivo, caso ele não exista, se existir naum faz nd, segue o codigo abaixo.

import java.io.*;
import javax.swing.JOptionPane;

public class ManipulandoArquivos {
    
    
    
    public ManipulandoArquivos(){
        
    }
    
    
    public void NovaGrav( String name, String Sobrenome, int nReg, String RG ) throws IOException{
        
        try{
            
            File arqui =  new File( "cadastro.txt" );
            FileOutputStream fos = new FileOutputStream(arqui);
            String aux;
            aux = "\n" + nReg + " ";
            fos.write( aux.getBytes() );
            aux = "\n" + name + " ";
            fos.write( aux.getBytes() );
            aux = "\n" + Sobrenome + " ";
            fos.write( aux.getBytes() );
            aux = "\n" + RG + " " + "\n";
            fos.write( aux.getBytes() );
            
            fos.close();
            
            
        }catch (FileNotFoundException ex) {
            ex.printStackTrace();
        }
        
        
    }
    
    public String LeArquivo() throws IOException{
        
        StringBuilder sb = new StringBuilder();

        try{
            
            File arqui =  new File( "cadastro.txt" );
            FileInputStream fis = new FileInputStream(arqui);
            
            int ln;
            while( (ln = fis.read()) !=  -1 ){
                
                sb.append( (char)ln );
                if( (char)ln == ' ' ){
                    
                sb.append( "\n" );
                
                }
            }
            
            
            
        }catch (FileNotFoundException ex) {
            JOptionPane.showMessageDialog( null, ex.getMessage() + "", "ERRO", JOptionPane.ERROR_MESSAGE );
            System.exit(0);
        }
        
        return sb.toString();
        
    }
    
}

Uma dica que irei lhe dar. Se for gravar arquivos textos não binários, utilize o BufferedWriter.

Dessa forma fazemos o seguinte…

Criamos um arquivo pela classe File, depois atribuímos esse objeto a um BufferedWriter do qual iremos evocar toda vez o método write do mesmo para gravar. Não se esqueça de colocar “\n” ou “\r\n” a depender do SO para pular a linha.

Depois é só fechar o canal chamando o método close e pronto.

poderia me mostrar uma parte de um codigo para eu analisar como devo proceder?

Mas como eu disse, se seguir da forma como falei você conseguirá escrever dados em um arquivo de texto de forma simples e rápida.

mais continuei com omsm problema

eu quero inserir novos cadastros e o programa inseri sempre um em cima do outro, isso que eu gostaria de corrigir, pensei em adicionar um ] no final do txt para qdo o programa encontrar algum ele inserir em baixo, só não sei como fazer

Sua lógica está mais complexa e desnecessária, não precisa de forma alguma inserir um “]” para que ele substitua por um linha para pular, apenas adicione o que eu falei antes, você precisa saber que para pular linha segue da forma dos caracteres especiais como “\n” ou “\r\n”, da mesma forma que ocorre no C/C++.

Tente fazer o código da forma como falei, assim você irá estimular a sua lógica e raciocínio e então poderei lhe ajudar tirando suas dúvidas em cima do código.

eu substitui os fos e fis por BufferedWriter e BufferedReader, mas no txt fica a msm coisa, eu so gostaria de saber como faço para naum ficar sobreescrevendo as dados que já tenho, se tem algum meio?

vou postar como ficou meu codigo

import java.io.*;
import javax.swing.JOptionPane;

public class ManipulandoArquivos {
    
    
    
    public ManipulandoArquivos(){
        
    }
    
    
    //Insere uma nova gração no arquivo de texto
    public void NovaGrav( String name, String Sobrenome, int nReg, String RG ) throws IOException{
        
        try{
            //abre o arquivo
            File arqui =  new File( "cadastro.txt" );
            //adiciona o arquivo para ser escrito
            BufferedWriter bw = new BufferedWriter( new FileWriter( arqui ) ) ;
            String aux;
            aux =  "\nNumero: " + nReg + " ";
            bw.write( aux ); //escreve no arquivo
            aux = "\nNome: " + name + " ";
            bw.write( aux );
            aux = "\nSobrenome: " + Sobrenome + " ";
            bw.write( aux );
            aux = "\nRG: " + RG + " " + "]";
            bw.write( aux );
            
            bw.close();//fecha arquivo de escrita
            
        }catch (FileNotFoundException ex) {
            ex.printStackTrace();
        }
        
        
    }
    //Le o arquivo
    public String LeArquivo() throws IOException{
        //StringBuilder para formar uma string para exibir na tela os cadastros
        StringBuilder sb = new StringBuilder();

        try{
            //define qual é o arquivo
            File arqui =  new File( "cadastro.txt" );
            //adiciona o arquivo para ser lido
            BufferedReader br = new BufferedReader( new FileReader( arqui ) ) ;
            int ln;//declara uma linha
            while( (ln = br.read()) !=  -1 ){
                //verifica enqto a linha naum for = -1
                
               if( (char)ln == ']' ){//se o caracter da linha for = a ] 
                    
                sb.append( "\n" );//pula uma linha
                
                }else{//senaum
                   
                   sb.append( (char)ln );//adiciona o caracter
                   
                }
            }
            
            
            
        }catch (FileNotFoundException ex) {
            JOptionPane.showMessageDialog( null, ex.getMessage() + "", "ERRO", JOptionPane.ERROR_MESSAGE );
            System.exit(0);
        }
        
        return sb.toString();//retorna string formada
        
    }
    
}

Veja o código abaixo, irei comentá-lo logo em seguida…

Você fez de forma parecida com esse, não entanto quando utilizo “\r\n” para pular a linha, criei apenas uma referência para dois objetos do tipo String, no primeiro ele atribui o valor “ET” escreve no buffer do arquivo, e então perde essa String, depois a referência aponta para outra String com o valor de “Minha casa” antecedido pelo retorno e pulagem de linha.

Dou um flush no final e fecho a conexão do BufferedWriter, então ele criou um arquivo de texto do qual não tem valores substituidos

coloque estas linhas de codigo no seu programa
Este true diz que é para ele escrever sempre em uma linha nova
fw = new FileWriter(diretorio, true);

		while (iter.hasNext()){
			String valor = (String) iter.next();
			String txt = valor + "\n";
			fw.write(txt);
		}
		fw.close();

Olá pessoa preciso de uma ajuda ai
bom eu tenho um programa para fazer com a seguinte situação

ele pega lê um arquivo XML e depois edita o mesmo…
por fim ele insere o dados dentro de um banco de dados qualquer

bom estou precisando muito disso se alguem ai puder me ajudar…
vlw.