我试图从获取输入JOptionPane并存储什么用户输入到使用文本文件FileWriterclass.To确保从用户输入被存储在什么输入我写了一个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();
}
Run Code Online (Sandbox Code Playgroud)
Bri*_*new 15
缓冲编写器只会在它们已满或者它们被关闭时写出(因此名称为Buffered).
所以你可以这样做:
out.close();
Run Code Online (Sandbox Code Playgroud)
这将刷新缓冲区然后关闭它.如果您只想刷新它,但保持打开以进行进一步的写入(例如,假设您正在编写日志文件),您可以执行以下操作:
out.flush();
Run Code Online (Sandbox Code Playgroud)
在完成这样的资源时你可能想要这样做.例如
BufferedWriter out = ...
try {
out.write(...);
}
catch (Exception e) {
// ..
}
finally {
out.close();
}
Run Code Online (Sandbox Code Playgroud)
或者可能使用Java 7中的try-with-resources构造,(坦率地说)编写代码更可靠.
您应该在finally 块中关闭您的编写器。
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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31832 次 |
| 最近记录: |