java中的FileWriter没有写入txt文件

时间:2013-07-19 16:01:47

标签: java filewriter

我正在尝试从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();
}

3 个答案:

答案 0 :(得分:14)

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

所以你可以这样做:

out.close();

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

out.flush();

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

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:3)

Java 7版本,try()自动关闭。

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

/之后注意左侧.txt