有没有办法使PrintWriter输出为UNIX格式?

Mon*_*ter 7 java unix

当然是在Java中.我正在编写一个程序并在Windows环境下运行它,但我需要输出(.csv)以Unix格式完成.任何简单的方案?谢谢!

Jon*_*eet 13

注意:正如评论中所报告的那样,下面给出的方法在JDK 9+中打破.在James H.的回答中使用这种方法.


"Unix格式"是指使用"\n"作为行终止符而不是"\ r \n"?只需line.separator在创建PrintWriter之前设置系统属性即可.

就像一个演示:

import java.io.*;

public class Test
{
    public static void main(String[] args)
        throws Exception // Just for simplicity
    {
        System.setProperty("line.separator", "xxx");
        PrintWriter pw = new PrintWriter(System.out);
        pw.println("foo");
        pw.println("bar");
        pw.flush();
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,它为整个JVM设置了它,这不是理想的,但它可能就是你所需要的.


Jam*_* H. 13

要编写带有unix行结尾的文件,请在从PrintWriter派生的类中覆盖println,并使用print with \n.

PrintWriter out = new PrintWriter("testFile") {
    @Override
    public void println() {
        write('\n');
    }
};
out.println("This file will always have unix line endings");
out.println(41);
out.close();
Run Code Online (Sandbox Code Playgroud)

这样可以避免触及代码中现有的任何println调用.