PrintWriter#println方法不按预期工作

4
此代码:
PrintWriter output = new PrintWriter(new FileWriter(outputFile, false));
output.println("something\n");
output.println("something else\n");

输出:

something
something else

替代方案:

something

something else

我尝试使用"\r\n"而不是只用"\n",但它并没有按照我想要的方式工作。我该如何解决?
附注:我正在使用Windows 7。

使用 -- output.print("something\n\n"); - Rahul Agrawal
3
你能否发布输出文件的十六进制转储? - BigMike
3
你是用记事本检查文件内容吗?它不会将单个\n显示为换行符,但实际上存在。你可以使用其他文本编辑器或十六进制编辑器来验证。 - halex
2
请查看此链接 并使用高级文本编辑器检查输出,以便您可以查看实际输出的字符。 - James P.
@JamesPoulson 把你的评论变成答案,我会给你一个赞。 - BigMike
显示剩余2条评论
5个回答

6
您可以将系统的换行符连接起来,以分隔您的文本行:
    String newLine = System.getProperty("line.separator");
    output.println("something" + newLine);
    output.println("something else" + newLine);

这也仅在文件在与程序运行的同一系统中查看时才能保证有效。但这比使用\n\r\n更清晰。 +1 - brimborium

2

This

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Main {
    public static void main(String[] args) {
        PrintWriter output;
        try {
            output = new PrintWriter(new FileWriter("asdf.txt", false));
            output.println("something\n");
            output.println("something else\n");
            output.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

对我来说很有效,我得到了像这样的asdf.txt

一些内容

其他一些内容

我正在使用jre1.7,你在使用什么?


问题不在于Java。如上所建议,我下载了一个高级编辑器(Notepad ++),一切都显示得很好。感谢您回复我的帖子! - Haque1
你使用的编辑器无法正确显示\n吗? - brimborium

2

您的代码运行良好,只需使用适当的程序员编辑器检查文件即可。 (或者如我之前建议的那样,查看文件的十六进制转储)


1

这个工作完美无缺。你可能在使用记事本输出。尝试使用其他文本编辑器,如notepad++。你会得到你想要的输出。


0

试试这个:

package com.stackoverflow.works;

import java.io.FileWriter;
import java.io.PrintWriter;

/*
 * @author: sarath_sivan
 */
public class PrintWriterExample {

    private static final String NEW_LINE = System.getProperty("line.separator");

    public static void main(String[] args) {
        String outputFile = "C:/Users/sarath_sivan/Desktop/out.txt";
        PrintWriter output = null;
        try {
            output = new PrintWriter(new FileWriter(outputFile, false));
            output.println("something" + NEW_LINE);
            output.println("something else" + NEW_LINE);
            output.flush();
        } catch(Exception exception) {
            exception.printStackTrace();
        } finally {
            if (output != null) {
                output.close();
            }
        }
    }
}

输出:

Output


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接