使用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;
}

MyFrame.ShowSaveDialog();返回什么?关键是使用适当的构造函数(第二个参数应该是布尔true)创建一个FileOutputStream,这将使其成为一个附加的FileOutputStream,然后使用这个FileOutputtream对象构造PrintStream。

例如,如果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(....) {
  // ....
}

编辑:
要将此应用于上面发布的代码,请执行以下操作:

   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构造函数中的true将创建一个附加到现有文件的FileOutputStream。请查看FileOutputStream API了解有关此方面的详细信息。

相关内容

  • 没有找到相关文章

最新更新