2014-11-11 2 views
0

У меня проблема с моим кодом. Я хочу сделать простой словарь, база данных которого хранится в txt-файле. Я хочу добавить новые слова в txt-файл с помощью BufferedWriter, но он больше не работает. Даже удалить все данные в текстовом файле, а я запустить программу Это Ööde:Пишите слова file.txt с использованием Bufferedwrite и bufferedread в Java

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public class AddWords { 

    public void addToDictionary(String _add) { 

     String line = null; 
     BufferedReader br = null; 
     BufferedWriter wr = null; 

     int count = 0;  
     try { 
      String path = "E:\\Lecture\\Semester 3\\IF321314 OOP\\Week 10\\Pratikum\\Sesi 01\\Kamus\\dictionary.txt"; 
      br = new BufferedReader(new FileReader(path)); 
      while ((line = br.readLine()) != null) { 

      } 
      wr = new BufferedWriter(new FileWriter(path)); 
      wr.newLine(); 
      wr.write(_add); 
      br.close(); 
      System.out.println("Words successfully added!"); 
     } catch (IOException ex) { 

     } 
    } 
} 

Параметр «_ADD» это сделать в другом файле, который является входным от пользователя, то есть новое слово, которое я хочу добавить в txt-файл

+1

Остановить игнорирование исключений. И определите «это не работает». Почему вы читаете файл, если вы хотите написать ему? Почему вы не закрываете своего писателя? Читайте http://docs.oracle.com/javase/tutorial/essential/io/charstreams.html –

ответ

0

Я считаю, что ваша проблема заключается в том, что Reader и Writer каким-то образом разделяют положение файла, в котором они работают, но это неверно. Вам не нужен этот Reader, и вы можете использовать Writer.append вместо Writer.write, чтобы добавить новый текст в конец файла, не перезаписывая предыдущие данные.

Консультация по теме: я никогда не использую FileWriter, потому что нет способа определить кодировку, она всегда использует ОС по умолчанию. Я думаю, что лучше использовать FileOutputStream, завернутый в OutputStreamWriter, который может определять пользовательскую кодировку.

0

Вы можете написать instread из

 wr = new BufferedWriter(new FileWriter(path)); 

как этот

 wr = new BufferedWriter(new FileWriter(path,true)); 

Это Samll пример для добавления файла.

  //true = append file 
      FileWriter fileWritter = new FileWriter(path,true); 
      BufferedWriter bufferWritter = new BufferedWriter(fileWritter); 
      bufferWritter.write(data); 
      bufferWritter.close();