2013-07-12 2 views
0

데이터를 저장할 텍스트 파일을 만들고 싶습니다. 텍스트 파일의 이름은 사용자가 입력 한 내용을 기반으로합니다. 코드는 정상적으로 작동하지만 왜 파일을 만들지 모르지만 자동으로 null 파일을 생성하지만 내 데이터는 두 파일에 모두 포함되어 있지 않습니다. 왜 그럴까요? 여기에 내 코드 : 그것은 순서대로 기입이 행해질 때 당신은 또한 그렇지 않으면 데이터가 파일에 기록되지 않습니다 귀하의 close 메소드 호출을 추가하고 확인해야파일을 만들려고합니다.

public void setCustomerID() 
{ 
    System.out.print("\nYou've choose to register a new customer\n"); 
    System.out.print("Please enter the customer's ID: "); 
    custID = input.nextLine(); 
} 

public String getCustomerID() 
{ 
    return custID; 
} 

public void openInputFile() 
{ 
    try 
    { 
     write = new PrintWriter(new BufferedWriter(new FileWriter("C:\\RetailDatabase\\" + (getCustomerID()) + ".txt",true))); 
    } 
    catch(IOException e) 
    { 
     System.err.println("Error opening/creating/writing a file!"); 
    } 
} 

public void addCustomer() 
{ 
    String firstname, lastname, sex, addrss, phoneNum, dob; 
    CustomerDetails record; 

    try 
    { 
     setCustomerID(); 
     System.out.print("Please enter the customer's first name: "); 
     firstname = input.nextLine(); 
     System.out.print("Please enter the customer's last name: "); 
     lastname = input.nextLine(); 
     System.out.print("Please enter the customer's gender: "); 
     sex = input.nextLine(); 
     System.out.print("Please enter the customer's address: "); 
     addrss = input.nextLine(); 
     System.out.print("Please enter the customer's phone number: "); 
     phoneNum = input.nextLine(); 
     System.out.print("Please enter the customer's date of birth (DD/MM/YYYY): "); 
     dob = input.nextLine(); 
     record = new CustomerDetails(firstname, lastname, sex, addrss, phoneNum, dob); 
     write.printf("\nFirst Name: %s \nLast Name: %s \nGender: %s \nAddress: %s \nPhone Number: %s \nDate Of Birth: %s",record.getFirstName(),record.getLastName(),record.getGender(), 
     record.getCustAddress(),record.getPhoneNumber(),record.getDateOfBirth()); 
     openInputFile(); 
     System.out.print("Customer's details is recorded!"); 
    } 
    catch(Exception e) 
    { 
     System.err.println("Error writing to file!"); 
     return; 
    } 
} 

public void closeInputFile() 
{ 
    try 
    { 
     write.close(); 
    } 
    catch(Exception e) 
    { 
     System.err.println("Error closing file!"); 
     System.exit(1); 
    } 
} 
+0

'catch (Exception e) {..' 형태의 코드를 catch (Exception e) {e.printStackTrace(); // 매우 유익한! .. ' –

답변

0

openInputFile() 
// write data..... 
closeInputFile(); 
0

그것을 write 개체가 null 일 때 파일에 쓰려고하는 것 같습니다. 먼저 write.printf으로 전화 한 다음 openInputFile()에 전화 한 후 나중에 초기화하십시오.

자바 악마가 언급했듯이 PrintWriter을 닫지 마십시오.

0

먼저 개봉 파일

write.printf("\nFirst Name: %s \nLast Name: %s \nGender: %s \nAddress: %s \nPhone Number: %s \nDate Of Birth: %s",record.getFirstName(),record.getLastName(),record.getGender(), 
    record.getCustAddress(),record.getPhoneNumber(),record.getDateOfBirth()); 

에 기록한 다음, 클래스 및 AddCustomer와() 메서드를 호출하기 전에 어딘가 외부에서)이

openInputFile(); 

당신은 어쩌면 openInputFile을 (호출해야 열고있다.

+0

오, 내가 몇 분 동안이 질문을 게시 한 후에 알아 냈다. 어쨌든 고마워. :) –