java中的FileWriter未写入txt文件
我正在尝试从java中的FileWriter未写入txt文件,java,filewriter,Java,Filewriter,我正在尝试从JOptionPane获取输入,并使用FileWriter类将用户键入的内容存储到文本文件中。为了确保用户键入的内容正在存储,我编写了一个system.out,并在JOptionPane中显示我键入的内容。不幸的是,当我打开.txt文件时,没有显示我输入的任何内容!顺便说一下,我输入的文件路径是正确的 这是我的密码。救救我 String playername = JOptionPane.showInputDialog("What Will Be Your Character's Na
JOptionPane
获取输入,并使用FileWriter
类将用户键入的内容存储到文本文件中。为了确保用户键入的内容正在存储,我编写了一个system.out,并在JOptionPane中显示我键入的内容。不幸的是,当我打开.txt文件时,没有显示我输入的任何内容!顺便说一下,我输入的文件路径是正确的
这是我的密码。救救我
String playername = JOptionPane.showInputDialog("What Will Be Your Character's Name?");
System.out.println(playername);
try {
FileWriter charectersname = new FileWriter("/Users/AlecStanton/Desktop/name.txt/");
BufferedWriter out = new BufferedWriter(charectersname);
out.write(playername);
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
你应该在最后一个街区关闭你的作家
BufferedWriter out = null;
try {
out = new BufferedWriter(new FileWriter("/Users/AlecStanton/Desktop/name.txt/"));
out.write(playername);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(out != null){
out.close();
} else {
System.out.println("Buffer has not been initialized!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
缓冲写入程序仅在其已满或关闭时写入(因此命名为Buffered) 所以你可以这样做:
out.close();
这将刷新缓冲区,然后将其关闭。如果您只想刷新它,但将其保持打开状态以进行进一步写入(例如,假设您正在写入日志文件),则可以执行以下操作:
out.flush();
您可能希望在完成此类资源时执行此操作。e、 g
BufferedWriter out = ...
try {
out.write(...);
}
catch (Exception e) {
// ..
}
finally {
out.close();
}
或者可能使用Java 7中的构造,坦率地说,编写代码更可靠。自动关闭try()的Java 7版本
try (BufferedWriter out = new BufferedWriter(
new FileWriter("/Users/AlecStanton/Desktop/name.txt"))) {
out.write(playername);
} catch (IOException e) {
e.printStackTrace();
}
注意在
.txt
之后省略的/
看起来您需要关闭BufferedWriter
。还要删除.txt
之后的斜杠/
。请注意out
变量范围就在try
代码块中。您的答案应该重构OP的代码。这里的一个常见问题是,您需要检查是否已初始化。否则,您的finally{}块可能会抛出一个NPElol。。正在编辑..格式设置混乱。我这样做了,但它不起作用。out.flush();因为我有更多的东西要写,所以对我来说很有用