此代码未写入文件,我无法找到原因。
File file = DirectoryChooser.showDialog(fxcontroller.getPrimaryStage());
if (file != null) {
BufferedWriter bw;
try {
File defaultMusicPath = new File("../defaultMusicPath.txt");
bw = new BufferedWriter(new FileWriter(defaultMusicPath,true));
bw.write(file.getAbsolutePath());
System.out.println("done");
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
此图像显示defaultMusicPath.txt的位置
https://i.stack.imgur.com/8vxSO.png
如果查看底部的图像,则表明file.getAbsolutePath()不为空
按照别人的说法,我在这里做了一个最低限度可验证的例子 我简化了它,它仍然无法写入文件:
BufferedWriter bw;
File defaultMusicPath = new File("../defaultMusicPath.txt");
try {
bw = new BufferedWriter(new FileWriter(defaultMusicPath,true));
bw.write("it should write this");
bw.flush();
bw.close();
System.out.println("done");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:0)
您正在选择将文件放在此处的位置
File file = DirectoryChooser.showDialog(fxcontroller.getPrimaryStage());
你正在写一个文件,它是 Eclipse项目之外的一个文件夹(如果不清楚的话)
File defaultMusicPath = new File("../defaultMusicPath.txt");
bw = new BufferedWriter(new FileWriter(defaultMusicPath,true));
然后,您正确地将第一个File对象的路径写入第二个File对象
bw.write(file.getAbsolutePath());
如果没有错误,那么正在将写入文件,因此您可能需要在编辑器中关闭并重新打开该文件。
如果要写入Eclipse项目,请删除相对../
。
另外,我建议在捕获后在finally
块中关闭作者。或者像这样使用try-with-resources
File f = new File("defaultMusicPath.txt");
try (BufferedWriter bw =
Files.newBufferedWriter(Paths.get(f.toURI()), StandardOpenOption.APPEND);
PrintWriter out = new PrintWriter(bw)) {
out.println("Hello, world!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}