在 Groovy 中处理字节顺序标记字符
作者: Paul King
发布时间: 2024-07-11 08:00PM
一篇 最近的文章 展示了如何在 Java 代码中处理文本文件中的 字节顺序标记 (BOM) 字符。特别是,在处理文本文件时,通常需要手动删除这些字符。这篇文章展示了如何使用 InputStream
和 Reader
类以及 NIO
功能来删除 BOM 字符。它还展示了如何使用 Apache Commons IO 中的 BOMInputStream
类。它会自动跳过 BOM 字符。
这些示例可以在 Groovy 中直接运行(尽管在修复第一个示例中的错误后),但在 Groovy 中,完整的惯用解决方案是
println new File('file.txt').text
没错,Groovy 在使用 getText()
方法以及 eachLine
、splitEachLine
、readLines
、withReader
和 filterLine
等其他方法时,会自动检测编码并删除 BOM 字符。相同的功能也可以使用文件和 URL 上的 newReader
方法获得。
如果需要,有一些变体允许您指定编码,以防您希望显式声明它。在这种情况下,您需要手动处理 BOM 字符。
Groovy 的方法(如 getText
)调用底层的 CharsetToolkit
类。如果您想了解有关文件编码的更多信息,也可以直接使用该类。