Javafx将textField保存为文本文件

时间:2018-03-09 14:23:41

标签: java javafx

我有这个代码用于保存到文本文件但是,我似乎无法找到一种方法来保存到不是user.home文件夹而是保存到我硬盘上的另一个文件夹。我在很多地方搜索过,但是找不到任何可以帮助我的东西。

它适用于user.home设置,但如果我尝试更改它,它就不会。该程序在执行时会找到Source not found。

saveBtn.setOnAction(new EventHandler<ActionEvent>() 
    {
        public void handle(ActionEvent event)
        {
            Object source = event.getSource();
            String s = null;
            //Variable to display text read from file
            if (_clickMeMode) {
                FileOutputStream out = null;
                try {
                //Code to write to file
                String text = titleField.getText();
                byte b[] = text.getBytes();
                String outputFileName = System.getProperty("user.home"
                    + File.separatorChar+"home")
                    + File.separatorChar + "Movies2.txt";
                    out = new FileOutputStream(outputFileName);
                    out.write(b);
                    out.close();
                    //Clear text field
                    titleField.setText("");
            }catch (java.io.IOException e) {
                System.out.println("Cannotss text.txt");
        } finally {
            try {
                out.close();
            } catch (java.io.IOException e) {
                System.out.println("Cannote");
            }
            }
            }
            else 
            {
                //Save text to file
                _clickMeMode = true;
            }                       
        window.setTitle("Main Screen");
        window.setScene(mainScreen);
        }
    });

1 个答案:

答案 0 :(得分:0)

您的文件名分配错误:

String outputFileName = System.getProperty("user.home"
    + File.separatorChar+"home")
    + File.separatorChar + "Movies2.txt";

您正在将"user.home/home"表单的字符串传递给System.getProperty()

由于没有此类属性,因此会返回null

然后,您将其与/Movies2.txt连接,因此outputFileName将类似于null/Movies2.txt

(一个简单的System.out.println(outputFileName)将证实这一点。)

您应该使用更高级别的API来代替像这样手工构建文件名。 E.g:

Path outputFile = Paths.get(System.getProperty("user.home"), "home", "Movies2.txt");
OutputStream out = Files.newOutputStream(outputFile);
out.write(b);

如果您还需要(或可能需要)创建目录,您可以

Path outputDir = Paths.get(System.getProperty("user.home"), "home");
Files.createDirectories(outputDir);
Path outputFile = outputDir.resolve("Movies2.txt");
OutputStream out = Files.newOutputStream(outputFile);
out.write(b);