Почему мой файлрайтер оставляет лишние строки при записи в файл?

У меня есть filewriter, который (очевидно) используется для записи информации о пользователях в файл; пишет нормально, программа работает нормально, однако писатель не пишет в файл нужным образом. Я заметил, что при открытии файла, в который он пишет, он иногда оставляет пустые строки там, где я этого не хочу, и я не понимаю, почему. Ниже приведен код, относящийся к записи файла (это единственное место в файле, где используется 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();

Желаемый вывод в файл - это когда нигде в файле не осталось пустых строк, фактический вывод в файл после записи в него несколько раз выглядит следующим образом:

выведите файл


person James    schedule 30.09.2014    source источник
comment
Всегда очищать буфер после написания   -  person kolossus    schedule 30.09.2014
comment
@kolossus закрывается смывает.   -  person Philipp Gayret    schedule 30.09.2014
comment
Ваш цикл While только записывает новые строки в файл.   -  person Ravi Yenugu    schedule 30.09.2014
comment
@Филипп- А. Я понимаю   -  person kolossus    schedule 30.09.2014


Ответы (1)


Этот фрагмент кода неверен:

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

CurrentData (кстати, переменные должны начинаться с нижнего регистра) всегда "" (пустая строка), поэтому вы ничего не пишете, а затем символ новой строки.

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

должно сработать

person Pablo Lozano    schedule 30.09.2014
comment
Я изменил это, и он по-прежнему пишет не так, как хотелось бы, его вывод выглядит так: dropbox.com/s/u87xjja06ly2yoo/ - person James; 30.09.2014
comment
Вам нужно добавить \n в конце Details или добавить новую строку после записи в файл. - person Pablo Lozano; 30.09.2014
comment
Можно ли как-то остановить запись одной и той же учетной записи более одного раза при повторном запуске программы? - person James; 30.09.2014
comment
это другой вопрос - person Pablo Lozano; 30.09.2014