【问题标题】:difference between newLine() and carriage return("\r")newLine() 和回车("\r") 的区别
【发布时间】:2010-07-22 10:12:38
【问题描述】:

newLine() 和回车(“\r”)有什么区别? 哪个最好用?

File f = new File(strFileGenLoc);
BufferedWriter bw = new BufferedWriter(new FileWriter(f, false));
rs = stmt.executeQuery("select * from jpdata");
while ( rs.next() ) 
{
    bw.write(rs.getString(1)==null? "":rs.getString(1));
    bw.newLine();
}

【问题讨论】:

  • 你指的是哪个newLine()
  • @skaffman.. 请查看我正在使用的上述代码。

标签: java


【解决方案1】:

假设你的意思是:

public static String newLine = System.getProperty("line.separator");

newLine 与环境无关 \r 不是。

所以newLine 会在 Windows 上给你\r\n,但在另一个环境上给你\n

但是,您不应该在 JTextArea 中使用它,并且 println 在 Windows 上仅使用 \n 就可以正常工作。

在我看到代码和您的评论后进行编辑

在你的情况下。我认为您应该使用自己的常量 - \r\n

  File f = new File(strFileGenLoc);
  BufferedWriter bw = new BufferedWriter(new FileWriter(f, false));
  rs = stmt.executeQuery("select * from jpdata");
  while ( rs.next() ) {
    bw.write(rs.getString(1)==null? "":rs.getString(1));
    bw.write("\\r\\n");
  }

【讨论】:

  • 。我正在使用 java 代码在 unix 环境中创建文本文件。并将文件传输给客户端,但从他们这边他们需要在文本文件中回车。我必须使用哪一个 newLine() 或回车 ("\r")
  • 我会使用“\r\n”,因为它会在 Windows 和大多数 unix 文本编辑器上正确显示。
【解决方案2】:

在过去的 ASR-33 电传打字机(以及后来的带有移动打印头的点阵打印机)中,CR 就像在打字机中一样将托架返回到左侧,而 LF 推进纸张。如果 CR 出现在 LF 之前,机器可能会重叠操作,这就是为什么换行符总是 CR-LF,即 \r\n。如果你把它放回前面,打印需要更长的时间。 Unix 是第一个(唯一?)采用 \n 作为标准行分隔符的系统。 DOS/Windows 没有。

【讨论】:

    【解决方案3】:

    写一个行分隔符。线 分隔符字符串由 系统属性 line.separator,并且是 不一定是一个换行符 ('\n') 字符。

    来源:http://download.oracle.com/docs/cd/E17476_01/javase/1.5.0/docs/api/java/io/BufferedWriter.html

    【讨论】:

    • 不回答问题。客户需要回车。所以他必须写。
    【解决方案4】:

    在 Windows 平台上,行分隔符是 CRLF(回车/换行),即“\r\n”。在 Unix 平台上,它只是 LF,“\n”。传统上,在 Apple 平台上它只是 CR,“\r”。

    【讨论】:

      【解决方案5】:

      主要的新行(\n)和回车(\r)是:

      新行(\n)和回车(\r)都是java中的r转义序列..

      换行(\n):

      当在可执行语句中找到\n 时,JVM 会将行从我们放置\n(转义序列)的位置分成两部分。 示例:

      println("Stackover\nflow");
      

      输出:

      Stackover // here the line got split into 2 lines because of "\n"   
      flow
      

      回车(\r):

      \r 之后放置的数据或字符与同一行中的先前字符过度疲劳...

      示例:

      println("Stackover\rflow"); 
      output:
      flow  // here Statckover is overtired  because of "\r" 
      

      【讨论】:

      • JVM 不分割任何东西。 已经被分割,由于换行。 on 正在打印的 device 可能会或可能不会像您描述的那样运行。 JVM 完全不参与其中。误传太多。 -1
      猜你喜欢
      • 1970-01-01
      • 2019-03-07
      • 2012-09-26
      • 1970-01-01
      • 2023-03-05
      • 2011-04-16
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      相关资源
      最近更新 更多