2014-01-15 4 views
3

외부 텍스트 파일에 사용자 목록을 저장하려고합니다. 계정이 이미 없으면 가입해야합니다. 그들의 계정은 텍스트 파일에 추가됩니다.프로그램이 실행될 때마다 새지만 다른 개체 만들기

그러나 새 사용자를 만들 때마다 텍스트 파일의 마지막 사용자를 덮어 씁니다.

누구든지 새로운 사용자를 만들 때 내 코드에 어떤 문제가 있는지 알 수 있습니까?

편집 :

내가 텍스트 파일을 내가 프로그램을 실행할 때마다 다시 생성되고 있음을 믿고, 어떻게 난 그냥 대신 새로운마다 만드는, 여기에 추가 할 수 있습니까? 이 같은

System.out.println("Enter your full name below (e.g. John M. Smith): "); 
     String name = scanner.nextLine(); 
     System.out.println("Create a username: "); 
     String userName = scanner.nextLine(); 
     System.out.println("Enter your starting deposit amount: "); 
     double balance = scanner.nextInt(); 

     System.out.print(dash); 
     System.out.print("Generating your information...\n"); 
     System.out.print(dash); 

     int pin = bank.PIN(); 
     String accountNum = bank.accountNum(); 

     User user = new User(name, userName, pin, accountNum, balance); 

     // new user gets added to the array list 
     Bank.users.add(user); 

     System.out.println(user); 

    } 

    try { 

     File file = new File("users.text"); 

     if (!file.exists()) { 
      file.createNewFile(); 
     } 

     FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
     BufferedWriter bw = new BufferedWriter(fw); 

     bw.append(String.valueOf(Bank.users)); 
     bw.close(); 

     System.out.print("DONE"); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

답변

3

문제는 FileWriter 인스턴스를 만들 때 추가를 요구하지 않는다는 것입니다. 기본값은 덮어 쓰기입니다.

이 (문맥 추가 라인)을보십시오 : 파일 beacause를의

if (!file.exists()) { 
     file.createNewFile(); 
    } 

    // Line being changed 
    FileWriter fw = new FileWriter(file.getAbsoluteFile(), true); 


    BufferedWriter bw = new BufferedWriter(fw); 

    bw.append(String.valueOf(Bank.users)); 
    bw.close(); 
+0

감사합니다! 당신은 내게 큰 도움이되었습니다! – 23k

1

뭔가 작업을해야합니다 :

String filename= "users.test"; 
FileWriter fw = new FileWriter(filename,true); //the true will append the new data 
fw.write(String.valueOf(Bank.users));//appends the string to the file 
fw.close(); 

이 사용 해보세요. 코스에 예외 사항을 추가하십시오.

1

오픈에 잘린을 가져옵니다. 두 번째 매개 변수는 그렇게 할 수있는 FileWriter을 말할 것이다

FileWriter fw = new FileWriter(file.getAbsoluteFile(), true); 

: 당신과 함께, APPEND 모드로 열어야합니다. 참조 here.

1

이 교체 :이에 의해

FileWriter fw = new FileWriter(file.getAbsoluteFile()); //overwrite 

을 :

FileWriter fw = new FileWriter(file.getAbsoluteFile(), true); //append 
관련 문제