2014-08-28 123 views
0

应用程序应该能够注册一个新用户并将数据保存到已经有很多用户数据的文本文件中。此代码是有效的,但它不会将新数据保存到文本文件。我应该如何覆盖文本文件?我应该先从文本中读取数据并将所有数据写回到文本文件,还是有办法添加新行并在其中写入新数据?用Java覆盖文本文件

registerB.addActionListener(new ActionListener(){ 
         public void actionPerformed(ActionEvent e){ 
          String getFullname = fullnameT.getText(); 
          String getUsername = usernameT.getText(); 
          String getPassword = passwordT.getText(); 
          String getPN = pnT.getText(); 
          String getEmail = emailT.getText(); 
          boolean theSame = false; 
          String []Fullname = new String[20]; 
          String []Username = new String[20]; 
          String []Password = new String[20]; 
          String []PN = new String[20]; 
          String []Email = new String[20]; 

      if(!getFullname.isEmpty() && !getUsername.isEmpty() && !getPassword.isEmpty() && !getPN.isEmpty() && !getEmail.isEmpty()){ 
       int k = 0; 
       try { 
        Scanner in = new Scanner (new FileReader("login.txt", true)); 
        while (in.hasNext()) { 
         Fullname[k] = in.next(); 
         Username[k] = in.next(); 
         Password[k] = in.next(); 
         PN[k] = in.next(); 
         Email[k] = in.next(); 
         in.next(); 

         if(getUsername.equals(Username[k])){ 
          JOptionPane.showMessageDialog(null, "Username already has been registered."); 
          theSame = true; 
          break; 
         } 
         k++; 
        } 
       }catch(Exception ew){} 
       try 
       { 
        String path = "login.txt"; 

        File file = new File(path); 

        FileWriter fileWriter = new FileWriter(file,true); 

        BufferedWriter bufferFileWriter = new BufferedWriter(fileWriter); 

        fileWriter.append("," + getFullname + "," + getUsername + "," + getPassword + "," + getPN + "," + getEmail +"," + "\n"); 

        bufferFileWriter.close(); 

        System.out.println("User Registration Completed"); 

       }catch(Exception ex){ 
        System.out.println(ex); 
       } 
      else{ 
       JOptionPane.showMessageDialog(null, "One or some of the fields is/are empty"); 
      } 
     } 
    }); 

文本文件的格式是这样的

fullname,username,password,phonenumber,email fullname,username,password,phonenumber,email

+0

可能重复(http://stackoverflow.com/questions/1625234/how-to-在java中添加文本到现有文件) – 2014-08-28 18:05:09

回答

0

这是错误的new FileReader("login.txt", true)

FileReader确实有这个构造

变化new FileWriter("login.text")new FileWriter("login.text", true)

真正将新数据添加到现有的数据

的[如何将文本追加到Java中的现有文件]
+0

我已经试过了,仍然不保存 – user3053089 2014-08-28 18:06:10

+0

您的FileReader构造函数是错的 – SparkOn 2014-08-28 18:12:35

+0

我看到它没有包含FileWriter。 Thnx为你提供帮助 – user3053089 2014-08-28 18:21:34