Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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 BufferedWriter-newLine()方法_Java_File_Newline_Bufferedwriter - Fatal编程技术网

Java BufferedWriter-newLine()方法

Java BufferedWriter-newLine()方法,java,file,newline,bufferedwriter,Java,File,Newline,Bufferedwriter,我已经遇到一个问题有一段时间了,并且已经测试了我能想到的所有可能性。不幸的是,这些可能性没有发挥作用 基本上,我正在尝试使用Java中的BufferedWriter写入.txt文件。我需要这个设置,这样我就可以在每一条数据之间有一条线。假设这是由Java生成的文本文件,它应该如下所示: line1 line2 这是我的密码: public static void main(String[] args) { Path path = Paths.get("test.txt");

我已经遇到一个问题有一段时间了,并且已经测试了我能想到的所有可能性。不幸的是,这些可能性没有发挥作用

基本上,我正在尝试使用Java中的BufferedWriter写入.txt文件。我需要这个设置,这样我就可以在每一条数据之间有一条线。假设这是由Java生成的文本文件,它应该如下所示:

line1

line2
这是我的密码:

public static void main(String[] args) {
    Path path = Paths.get("test.txt");

    if (!Files.exists(path)) {
        try {
            Files.createFile(path);
        } catch (IOException e) {
            System.out.println("Error in creating test.txt! Read the stacktrace 
            below.");
            e.printStackTrace();
        }
    }

    Charset charset = Charset.forName("UTF-8");
    try (BufferedWriter writer = Files.newBufferedWriter(path, charset)) {
        String string = "line1";
        writer.write(string, 0, string.length());
        writer.newLine();
        writer.newLine();

        writer.flush();
    } catch (IOException e) {
        System.out.println("Unable to write to file! Read the StackTrace below.");
        e.printStackTrace();
    }

    try (BufferedWriter writer = Files.newBufferedWriter(path, charset)) {
        String string = "line2";
        writer.write(string, 0, string.length());

        writer.flush();
    } catch (IOException e) {
        System.out.println("Unable to write to file! Read the StackTrace below.");
        e.printStackTrace();
    }
}
其输出生成一个文本文件,如下所示:

line2
现在,我知道我可以把我的两个try/Catch组合在一起,这会奏效的。但这只是一个测试表示;在我的实际代码中,我需要单独执行此操作,以便在触发特定事件时可以写入.txt文件

基本上,newLine()方法不会保存,除非我直接在它们之后编写文本


我们将一如既往地感谢您的帮助

第二个BufferedWriter,或者更确切地说是第二个隐式FileWriter,覆盖第一个文件创建的文件


按照您的建议组合语句,或使用附加模式(在这种情况下效率低下)。

您确定问题不在于重新打开文件时覆盖了已有的内容吗?您可以使用
Charset Charset=StandardCharsets.UTF\u 8
as StandardCharsets以常量形式列出任何JRE中始终可用的所有字符集(与ISO-8859-3不同)。没有不支持的例外!或者,如果您不想合并这些语句,您可以在整个应用程序中保留对编写者的引用。由于我的需要,我不能像我所说的那样合并它。如何附加它?
Files.newBufferedWriter(path,charset,StandardOpenOption.append)
第二个选项。或者按照@IstvanChung的建议。