【问题标题】:Java Writing in a File [duplicate]Java在文件中写入[重复]
【发布时间】:2013-05-26 18:16:31
【问题描述】:

我正在写入一个文件,我希望它以这种方式输出到一个 csv 文件中:

Group  Members  
 1     Name1  
       Name2  
       Name3  

代码:

FileWriter fw = new FileWriter(csv);
BufferedWriter pw = new BufferedWriter(fw);
pw.write("Group,");
pw.write("Members");
pw.newline();
String mem=some_method();
pw.write("1,");
pw.write(mem);
pw.newLine();

我的字符串内存在名称后面都有'\n',所以当它写入文件时,'\n'被读取然后写入下一行。如何在不修改 some_method() 的情况下实现上述输出?

【问题讨论】:

标签: java file


【解决方案1】:

你想去掉 mem 中的换行符。

退房 Remove end of line characters from Java string

简单地说,你可以添加行mem = mem.replaceAll("(\\r|\\n)", "");

【讨论】:

  • 如果我将它们删除,那么名称将不会显示在单元格的下一行中。
  • 如果您想保留换行符但让它显示为一个单元格,那么您只需将元素用双引号 (") 括起来。例如 pw.write("\"" + mem + "\"");
  • 请记住,您需要确保 mem 不包含双引号,或者它们至少被转义。例如mem = mem.replaceAll("\"", "\\\"");
  • 这行得通,pw.write("\"" + mem + "\"");谢谢。
【解决方案2】:

尝试如下,

String mem=some_method();
mem = mem.replace("\n", "");

您也可以使用 System.getProperty("line.separator") 代替 \n,它为您提供独立于平台的行分隔符。

mem = mem.replace(System.getProperty("line.separator"), "");

【讨论】:

    【解决方案3】:

    为什么不将 Group 和 Member 组合在一种写入方法中,例如:

    pw.write("Group \t\t Members");
    

    并对其他内容执行相同操作。希望这会有所帮助。

    【讨论】:

    • 不符合格式。
    猜你喜欢
    • 2013-04-17
    • 2012-12-05
    • 1970-01-01
    • 2019-03-04
    • 2013-01-08
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 2018-12-28
    相关资源
    最近更新 更多