2013-05-24 3 views
0

У меня есть файл, содержащий предложение Hello World. Я хочу сделать так, чтобы, если вы нажмете кнопку и файл содержит слово Hello, он будет заменен словом Hi, и если файл содержит World, он будет заменен на Earth и наоборот, чтобы файл мог содержать эти разные предложения: Hello World, Hi World, Hello Earth, и Hi Earth. Проблема в том, что я не могу понять, как заменить слова в файле, но просто переопределить его. До сих пор я использую этот код:Сохранение строк в файл

String command = e.getActionCommand(); 
    if(command.equals("Switch first word"){ 
      if(option.contains("Hello")){ 
       try{ 
        fos = new PrintWriter(new File("Options.dat")); 
        fos.print("Hi"); 
        fos.close(); 
       }catch(Exception ex){ 

       } 
      } 
      if(option.contains("Hi")){ 
       try{ 
        fos = new PrintWriter(new File("Options.dat")); 
        fos.print("Hello"); 
        fos.close(); 
       }catch(Exception ex){ 

       } 
      } 
     } 
    if(command.equals("Switch second word"){ 
      if(option.contains("World")){ 
       try{ 
        fos = new PrintWriter(new File("Options.dat")); 
        fos.print("Earth"); 
        fos.close(); 
       }catch(Exception ex){ 

       } 
      } 
      if(option.contains("Earth")){ 
       try{ 
        fos = new PrintWriter(new File("Options.dat")); 
        fos.print("World"); 
        fos.close(); 
       }catch(Exception ex){ 

       } 
      } 
     } 

Проблема с ним в том, что одно слово будет перекрывать весь файл вместо того, чтобы просто заменить на слово, так как я сделал бы это заменить слово с другим вместо того, чтобы перекрыть весь файл?

ответ

1

Как я могу заставить его заменить слово другим, а не переопределять весь файл?

У вас нет.

Вы создаете четыре предложения в четырех разных строках.

Вы открываете файл один раз. Вы пишете четыре строки, один раз. Вы закрываете файл один раз.

1

Вероятно, чистый способ

PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("filename", true))); 

Второй параметр информирует BufferedWriter класс, добавляемых к концу файла.

Альтернативно

Вы всегда можете прочитать в весь файл в структуру данных вы создаете (как объект), а затем внести изменения и записать все это обратно.