2013-09-27 3 views
-1

Im делает программу madlib, которая открывает файл txt, затем запрашивает у пользователя данные, а затем представляет окончательный madlib, который отлично отображается в консоли, но в тексте появляется только последняя строка madlib файл, пожалуйста, помогите это в Java btw.Буферизованный писатель на Java не правильно пишет

FileWriter outFile = new FileWriter(name + ".txt"); 
BufferedWriter bf = new BufferedWriter(outFile); 

long start = System.nanoTime();  
content = JOptionPane.showInputDialog("Please enter a/n " + 
     m.group().subSequence(1,m.group().length()-1)); 

madlib = m.replaceFirst(content); 
System.out.println(madlib); 
bf.write(madlib); 

long elapsedTime = System.nanoTime() - start; 
elapsedTime=elapsedTime/1000000; 
System.out.println(m.group().subSequence(1,m.group().length()-1) + " ; " + 
     content + " ; " + elapsedTime +"ms"); 
bf.write(m.group().subSequence(1,m.group().length()-1) + " ; " + content + 
     " ; " + elapsedTime +"ms"); 
bf.close(); 
+2

Параметр 'BufferedWriter' правильно писать. Ваша логика ошибочна. –

ответ

1

Я предполагаю, что ваш код будет вложен в то время как петли, особенно учитывая ваше использование m.group(), и если да, то у вас слишком много внутри цикла, так как вы создаете новый BufferedWriter каждый время петли цикла и, таким образом, переписывать все, что было написано ранее.

Решение: Создайте свой BufferedWriter перед тем цикл, писать с ним, внутри петли и закройте его после цикл заканчивается. Что-то вроде (псевдокод):

Create FileWriter 
Create BufferedWriter with FileWriter 
Start your while loop and loop through your groups 
    Do your loops, get your user's input 
    Write out the users input using the BufferedWriter 
end while loop 
Close the BufferedWriter (preferably done in a finally block). 

Как в стороне, в следующий раз, включает в себя всю необходимую информацию с вашим вопросом, в то числе использования Вами петли. Мы иногда ужасно угадываем, что код не показан или информация не предоставлена.

0

Этот код записывает только одну строку, на самом деле даже это не просто строку без терминатора строк. Он записывает его в файл, который создается каждый раз при выполнении этого кода. Нет никаких оснований для вашего ожидания того, что в файле будет больше данных.

Возможно, вы планировали открыть файл в режиме 'append' или оставить файл открытым и записать его несколько раз перед закрытием.

1

С предоставленной информацией я могу предложить только открыть файл в режиме добавления.

Insted из:

FileWriter outFile = new FileWriter(name + ".txt"); 

Использование:

FileWriter outFile = new FileWriter(name + ".txt", true); 
Смежные вопросы