我有这个代码用于保存到文本文件但是,我似乎无法找到一种方法来保存到不是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);
}
});
答案 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);