Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的FileWriter未写入txt文件_Java_Filewriter - Fatal编程技术网

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();因为我有更多的东西要写,所以对我来说很有用