Как добавить данные в файл? - PullRequest
4 голосов
/ 17 мая 2011

Я пытаюсь записать в текстовый файл.
Но без потери данных, которые уже сохранены в файле.

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

Мой код:

public void addWorker(Worker worker){
        workers.put(worker.getId(), worker);

    }

    public void printWorker (String id){
    Worker work = (Worker) workers.get( id );

    if (work == null) {
        System.out.println("Worker NOT found");
    } 

    else {
         work.printText();
     }
    }
       public void printWorkers() {
           if (workers.size() == 0) {
               System.out.println("No workres");
                return;
           }

           Collection<Worker> c = workers.values();
           Iterator<Worker> itr = c.iterator();
           System.out.println("Workers in division "+dName+ ":");
           while (itr.hasNext()) {
                  Worker wo = itr.next(); 
                  wo.printText();
           }
       }

       public void writeToFile(){
           PrintWriter pw = null;
           try{
               pw = new PrintWriter(new File("d:\\stam\\stam.txt"));
               Collection<Worker> c = workers.values();
               Iterator<Worker> itr = c.iterator();
               while (itr.hasNext()) {
                   Worker wo = itr.next(); 
                   pw.write("worker: "+wo.getId()+", "+wo.getName()+", "+wo.getAddress()+", "+wo.getSex());
                   pw.println();
               }
            }
            catch(Exception e) {
                System.out.println(e);
            }
            finally {
                if (pw != null) {
                    pw.close();
                }
            }

        }

}

Вы можете мне помочь?

Ответы [ 4 ]

8 голосов
/ 17 мая 2011

Вы должны установить поток в режим добавления, например:

pw = new PrintWriter(new FileWriter("d:\\stam\\stam.txt", true));
3 голосов
/ 17 мая 2011

Создайте отдельную переменную, чтобы подчеркнуть это, добавляя в файл.

boolean append = true;
pw = new PrintWriter(new FileWriter(new File("filepath.txt"), append));
2 голосов
/ 17 мая 2011

Используйте FileWriter со вторым аргументом 'true' и BufferedWriter:

FileWriter writer = new FileWriter("outFile.txt", true);
BufferedWriter out = new BufferedWriter(writer);
1 голос
/ 13 ноября 2013

В Java 7,

Files.write(FileSystems.getDefault().getPath(targetDir,fileName),
strContent.getBytes(),StandardOpenOption.CREATE,StandardOpenOption.APPEND);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...