Java 写入文件并通过 fileChooser 保存

Java write to file and save it by fileChooser

我是 java 的新手,我使用 netbeans 8 将过去两年的代码从 VB 移至 java。 现在我想将循环累积的数据写入文件并最后 使用下面的 FlieChooser 将生成的文件保存到特定位置 是我的代码,但是当我在 doilog 中输入名称并按回车键时,我在桌面上看不到任何文件:

public void   SaveToFile() throws IOException {
 try (Writer writer = new BufferedWriter(new OutputStreamWriter(
          new FileOutputStream("test.txt"), "utf-8"))) {
     int i=0;
     String Data[]=new String[10];
   while( i<10 ){
 writer.write("Student No :" + i);
  Data[i]= "Student No :" + i;
  ++i;
    }



   }

        int userSelection = db.showSaveDialog(this);
     if (userSelection == JFileChooser.APPROVE_OPTION) {
        File fileToSave = db.getCurrentDirectory();
                    String path = fileToSave.getAbsolutePath();
                    path = path.replace("\", File.separator);
                    System.out.println("Save as file: " + path);

    }
    }

我发现这有几个问题。第一,您在此处显示的代码 none 显示了在选择目录后对任何“.Save()”或复制或移动方法的调用。第二,File 对象指向目录,而不是文件名。第三,您的初始 Writer 对象可能正在将 test.txt 写入您的 .class 或 .jar 文件所在的目录,而它是 运行.

在开始写入磁盘之前,您需要确定要使用的目录和文件名。

更新

public void   SaveToFile() throws IOException {
    int userSelection = db.showSaveDialog(this);
    if (userSelection == JFileChooser.APPROVE_OPTION) {
        File fileToSave = db.getCurrentDirectory();
        String path = fileToSave.getAbsolutePath() + File.separator + "test.txt";

        try (Writer writer = new BufferedWriter(new OutputStreamWriter(
                  new FileOutputStream(path), "utf-8"))) {
            int i=0;
            //String Data[]=new String[10];
            while( i<10 ){
                writer.write("Student No :" + i);
                //Data[i]= "Student No :" + i; // Not sure why Data[] exists?
                ++i;
            }
        }

        System.out.println("Save as file: " + path);
    }
}

我认为这与您的需要差不多。我现在没有 java 编译器,所以我不能确定这是否是好的语法。但是网上有很多 Java 教程。