【问题标题】:Is there a Newline constant defined in Java like Environment.Newline in C#?Java 中是否有像 C# 中的 Environment.Newline 一样定义的换行符常量?
【发布时间】:2010-09-19 19:26:49
【问题描述】:

在 C# 中,静态属性 Environment.Newline 会根据运行平台而变化。

Java中有类似的东西吗?

【问题讨论】:

    标签: java


    【解决方案1】:

    从 Java 7(和 Android API 级别 19)开始:

    System.lineSeparator()
    

    文档:Java Platform SE 7


    对于旧版本的 Java,请使用:

    System.getProperty("line.separator");
    

    有关其他属性,请参阅https://java.sun.com/docs/books/tutorial/essential/environment/sysprop.html

    【讨论】:

      【解决方案2】:

      从 Java 7 开始:

      System.lineSeparator()
      

      Java API : System.lineSeparator

      返回系统相关的行分隔符字符串。它总是返回 相同的值 - 系统属性的初始值 行分隔符。在 UNIX 系统上,它返回 "\n";在微软视窗上 它返回“\r\n”的系统。

      【讨论】:

        【解决方案3】:

        请注意,此属性并不像许多人认为的那样有用。例如,仅仅因为您的应用程序在 Windows 机器上运行并不意味着它正在读取的文件将使用 Windows 样式的行分隔符。许多网页包含“\n”和“\r\n”的混合体,它们是从不同的来源拼凑而成的。当您将文本作为一系列逻辑行阅读时,您应该始终查找所有三种主要的行分隔符样式:Windows ("\r\n")、Unix/Linux/OSX ("\n") 和OSX 之前的 Mac ("\r")。

        当您编写文本时,您应该更关心文件的使用方式,而不是您运行的平台。例如,如果您希望人们在 Windows 记事本中阅读文件,则应使用“\r\n”,因为它只能识别一种分隔符。

        【讨论】:

        • pre-OSX Mac ("\r") 还在实际使用中吗?还是说可以安全地“忘记”它是真的?
        • 好吧,无论机器本身是否仍在使用中,您都必须假设仍有文档是在 OSX 之前的 Mac 上编写的。我知道将(?:\r?\n|\r) 缩短为(?:\r?n) 很诱人,但不,我认为这不安全。反正我更喜欢(?:\r\n|[\r\n]);我知道这是更多的字符,但它看起来更整洁。 :D 如果你不关心 多少 行分隔符,[\r\n]+ 工作得很好。
        • 完全同意...如果您的软件针对特定环境,静态常量仍有一席之地
        • 最佳答案。我必须生成一个需要将 CRLF 作为行分隔符的 TXT 文件,并且我的 webapp 通常在 Linux 上运行(并非总是如此)。使用 lineSeparator 将不起作用。
        猜你喜欢
        • 1970-01-01
        • 2014-10-28
        • 1970-01-01
        • 1970-01-01
        • 2021-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多