2012-03-21 2 views
2

Я не могу добавить текст в текстовый файл, он только перезаписывает предыдущий текст. Мой код:Добавить в текстовый файл с помощью PrintStream

//using JFileChooser to select where to save file 
PrintStream outputStream = MyFrame.ShowSaveDialog(); 
    if(outputStream!=null){ 
     outputStream.append(input); 
     outputStream.close(); 
    } 

Отредактировано: ShowSaveDialog возвращает PrintStream. Вот код для этого метода:

public static PrintStream ShowSaveDialog(){ 
    JFileChooser chooser = new JFileChooser(); 
    FileNameExtensionFilter filter = new FileNameExtensionFilter(
      "Tekst filer", "txt"); 
    chooser.setFileFilter(filter); 

    int returnVal = chooser.showSaveDialog(null); 
    try{ 
     if(returnVal == JFileChooser.APPROVE_OPTION){ 

      return new PrintStream(chooser.getSelectedFile());    
     } 
     else{ 
      return null; 
     } 
    } 
    catch(FileNotFoundException e){ 
     JOptionPane.showMessageDialog(null, "Ugyldig Fil!", 
        "error", JOptionPane.ERROR_MESSAGE); 
    } 
    return null; 

} 
+1

проверить, как вы создаете PrintStream – Jayan

ответ

8

Что возвращает MyFrame.ShowSaveDialog();? Ключом является создание FileOutputStream с соответствующим конструктором (вторым параметром должен быть boolean true), который сделает его добавлением FileOutputStream, а затем создаст PrintStream с помощью этого объекта FileOutputStream.

Например, если showSaveDialog() (обратите внимание, что метод и имена переменных должны начинаться с прописных букв) возвращает имя файла или объекта File, вы могли бы сделать что-то вроде этого:

try { 
    File file = myFrame.showSaveDialog(); // if this method returns a File!!!!! 
    FileOutputStream fos = new FileOutputStream(file, true); 
    PrintStream printStream = new PrintStream(fos); 
    //.... etc 
} catch(....) { 
    // .... 
} 

Edit:
чтобы применить это к вашему публикуемую кода выше, сделать что-то вроде этого:

public static PrintStream showSaveDialog() { 
     JFileChooser chooser = new JFileChooser(); 
     FileNameExtensionFilter filter = new FileNameExtensionFilter(
      "Tekst filer", "txt"); 
     chooser.setFileFilter(filter); 

     int returnVal = chooser.showSaveDialog(null); 
     try { 
     if (returnVal == JFileChooser.APPROVE_OPTION) { 

      // ******* note changes below ***** 
      File file = chooser.getSelectedFile(); 

      FileOutputStream fos = new FileOutputStream(file, true); 
      return new PrintStream(fos); 
     } else { 
      return null; 
     } 
     } catch (FileNotFoundException e) { 
     JOptionPane.showMessageDialog(null, "Ugyldig Fil!", "error", 
       JOptionPane.ERROR_MESSAGE); 
     } 
     return null; 

    } 

затруднение бы эти линии здесь:

  File file = chooser.getSelectedFile(); 
      FileOutputStream fos = new FileOutputStream(file, true); 
      return new PrintStream(fos); 

Истина в конструкторе FileOutputStream создает FileOutputStream, который добавляется к существующему файлу. Пожалуйста, ознакомьтесь с API FileOutputStream, чтобы узнать подробности об этом.

+1

Большое спасибо! Я получил его сейчас, и я понял, что вы сделали! – Twistar

+0

@Twistar: Добро пожаловать, и рад, что это помогло! –

 Смежные вопросы

  • Нет связанных вопросов^_^