2014-09-30 4 views
0

나는 명백하게 사용자 정보를 파일에 쓰는 데 사용되는 filewriter을 가지고 있습니다. 그것은 잘 씁니다, 프로그램이 잘 실행되지만 작가는 원하는 방식으로 파일에 쓰지 않습니다. 나는 그것이 쓰고있는 파일을 onpening 할 때 알아 차렸다. 빈 라인을 때로는 내가 원하지 않는 곳에 남겨두고, 왜 그런지 볼 수 없다. 다음은 파일 쓰기와 관련된 코드입니다 (이 파일은 filewriter이 사용 된 파일의 유일한 위치 임). 모든 변수 등이 정의되고 올바르게 작동합니다.파일 작성자가 파일에 쓸 때 필자가 불필요한 줄을 남기는 이유는 무엇입니까?

Details = "Name: " + name + " CardNo: " + CardNo + " Current Balance: " + balance + " overdraft? " + OverDraft + " OverDraftLimit: " + OverDraftLimit + " pin: " + PinToWrite; 
    try{ 
     //Create writer to write to files. 
     File file = new File(DirToWriteFile); 
     FileOutputStream fos = new FileOutputStream(file, true); // **note second param?** 
     Writer bw = new BufferedWriter(new OutputStreamWriter(fos, "UTF8"));   
     // FileReader reads text files in the default encoding. 
     FileReader fileReader = new FileReader("VirtualATM.txt"); 
     // Always wrap FileReader in BufferedReader. 
     BufferedReader bufferedReader = new BufferedReader(fileReader); 
     String CurrentData = ""; 
     while((bufferedReader.readLine()) != null) { 
       line = CurrentData; 
       bw.write(CurrentData); 
       ((BufferedWriter) bw).newLine(); 
     } 
     bw.write(Details); 
     System.out.println("Account created!"); 

     System.out.println(name + " Your card number is: " + CardNo); 
     // close the reader. 
     bufferedReader.close(); 
     //Close the writer. 
     bw.close(); 

파일에 원하는 출력은 빈 줄이 몇 번에 작성 후, 파일에 아무 곳이나 파일에 실제 출력을 떠난 적이있는 곳입니다 다음과 같습니다

output the the file

+0

항상 작동합니다 [당신의 버퍼를 플래시 (http://docs.oracle.com/javase/7/docs/api/java/io/BufferedWriter.html#flush()) 후 – kolossus

+0

@kolossus [closing] (http://docs.oracle.com/javase/7/docs/api/java/io/BufferedWriter.html#close())는 이미 플러시합니다. – Philipp

+0

While 루프는 파일에 새 행만 쓰고 있습니다. – EvenPrime

답변

2

이 코드 조각은 잘못된 것입니다 :

String CurrentData = ""; 
while((bufferedReader.readLine()) != null) { 
    line = CurrentData; 
    bw.write(CurrentData); 
    ((BufferedWriter) bw).newLine(); 
} 

CurrentData (BTW, 소문자로 시작해야하는 변수는) 항상 곁에 있습니다 s "" (빈 문자열)이므로 아무 것도 쓰지 않고 새 줄 문자를 씁니다.

while((currentData=bufferedReader.readLine()) != null) {...} 

+0

을 변경했다. 나는 그것을 바꿨다. 그리고 내가 원하는대로 글을 쓰고 있지 않다. 출력은 다음과 같다. https://www.dropbox.com/s/u87xjja06ly2yoo/Screenshot%202014-09-30%2016.06 .51.png? dl = 0 – James

+0

Details 끝에 "\ n"을 추가하거나 파일에 새 행을 추가해야합니다. –

+0

프로그램을 다시 실행할 때 한 번 이상 동일한 계정을 쓰지 못하게 할 수 있습니까? – James