Buffered Writer .write 不写入文件
Buffered Writer .write not writing to file
这段代码没有写入文件,我找不到原因。
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();
}
您正在选择一个位置来放置文件
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();
}
这段代码没有写入文件,我找不到原因。
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();
}
您正在选择一个位置来放置文件
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();
}