我如何在 java 中为寄存器系统使用自动递增?

How I can use an auto increment in java for a register system?

我正在为使用文件的学生创建一个注册系统,当我使用该程序时,自动递增工作正常,但是当我再次破坏它时,自动递增 returns 1,我也不允许使用 MySQL 数据库 我以主要形式初始化它

public class FrmPrincipal extends javax.swing.JFrame {
  AdmonOrgSecuencial a = new AdmonOrgSecuencial("Datos.dat","Id.dat");
  public static int idProveedor=1;
  
    /**
     * Creates new form FrmPrincipal
     */
    public FrmPrincipal() {
        initComponents();
        Idp gen = new Idp(idProveedor);
        a.idEscribir(gen);
    }

这是我用来创建和显示学生的代码

public class FrmAltas extends javax.swing.JDialog {
  AdmonOrgSecuencial a = new AdmonOrgSecuencial("Datos.dat", "Id.dat");
    
    /**
     * Creates new form FrmAltas
     */
    
    public FrmAltas(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
       Idp proid;
        int cve;
       int clave;
       int generador=FrmPrincipal.idProveedor;
               proid= a.busquedaId(generador);
               clave = proid.getIdp();
        txtClave.setText(String.valueOf(clave));
    }

  private void btnGrabarActionPerformed(java.awt.event.ActionEvent evt) {                                          
      Idp proid;
      
      int clave;
      int generador= FrmPrincipal.idProveedor;
      proid=  a.busquedaId(generador);
    
        clave = proid.getIdp();
              

        String nombre = txtNombre.getText();
        float promedio = Float.parseFloat(txtPromedio.getText());
        Alumno alu = new Alumno(clave, nombre, promedio);
        a.altas(alu);
         
         a.bajasId(generador);
         FrmPrincipal.idProveedor=generador+1;
         int mas=FrmPrincipal.idProveedor;
         Idp proid2= new Idp(mas);
         
        a.idEscribir(proid2);

        
        this.dispose();
    }  

这些是我使用的方法

 public void idEscribir(Idp cve){
        try{
           {
            fos = new FileOutputStream(idArchivo, true);
            dos = new DataOutputStream(fos);
            dos.writeInt(cve.getIdp());
            cont++;
            }
        }
        catch(FileNotFoundException e){
            
        }
        catch(IOException e){
            System.out.println("Error:" +e.getMessage());
        }finally{
            cerrarArchivoEscritura();
        }
        
       }
         
public void bajasId(int elmr){
        copiarIncremental(elmr);
        borrarRenombrarId();
    }
    public void copiarIncremental(int idc){
       int idg;
       try{
           fis = new FileInputStream(idArchivo);
           dis = new DataInputStream(fis);
           fos = new FileOutputStream("Temporario.dat");
           dos = new DataOutputStream(fos);
           while(true){
               idg = dis.readInt();
               
               if(idg != idc){
                   dos.writeInt(idg);
                   
               }
           }
       }catch(EOFException e){
           
       }catch(IOException e){
           System.out.println("Error"+ e.getMessage());
       }finally{
           cerrarArchivoLectura();
           cerrarArchivoEscritura();
       }
   }
    
  public void borrarRenombrarId(){
      File original = new File(idArchivo);
      original.delete();
      File temporal = new File("Temporario.dat");
      temporal.renameTo(original);
  }
public Idp busquedaId(int clave){
         boolean existe= false;
        int cve;
        
           try{
               fis= new FileInputStream(idArchivo);
               dis= new DataInputStream(fis);
               while(existe == false){
                   cve = dis.readInt();
                   
                if(clave == cve){           
                    existe = true;
                    return new Idp(clave);
                   }
              
               }
                return null;
           }catch(FileNotFoundException e){
               return null;
           }
           catch(EOFException e){
               return null;
           }catch(IOException e){
               System.out.println("Error"+ e.getMessage());
               return null;
           }finally{
           cerrarArchivoLectura();
       }  
    
    }

程序将它们的数据存储在主内存中。在程序退出时,所有这些数据都将丢失。因此,当您重新启动程序时,所有字段(例如您的 auto-increment 数字)将不再保留它们以前的值。

要解决此问题,您需要将 auto-increment 号码写入磁盘,例如通过将其存储在文件中。然后,在程序启动时,您想将先前保存的号码加载回主内存。