java中的FileWriter没有写入txt文件

我试图从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(); } 

缓冲编写器只会在它们已满或者它们被关闭时写出(因此名称为Buffered )。

所以你可以这样做:

 out.close(); 

这将刷新缓冲区然后关闭它。 如果你只想刷新它,但保持打开以进行进一步的写入(例如,想象你正在编写一个日志文件),你可以这样做:

 out.flush(); 

在完成这样的资源时你可能想要这样做。 例如

 BufferedWriter out = ... try { out.write(...); } catch (Exception e) { // .. } finally { out.close(); } 

或者可能使用Java 7中的try-with-resources构造,(坦率地说)编写代码更可靠。

带有try()的Java 7版本自动关闭。

 try (BufferedWriter out = new BufferedWriter( new FileWriter("/Users/AlecStanton/Desktop/name.txt"))) { out.write(playername); } catch (IOException e) { e.printStackTrace(); } 

注意左边/后面的.txt

你应该在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(); } }