关于Java文件的Dos2unix

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Java文件的Dos2unix相关的知识,希望对你有一定的参考价值。

如果dos2unix命令在Java源文件上运行,在编译之前是否会产生任何影响或影响? Java文件将从Linux中的CVS存储库下载,然后由Ant脚本编译为jar。谢谢。

答案

甚至不需要测试它(理论上):在Java语言中,换行符没有语义含义。因此,存在是无关紧要的(对于编译器而言)。

因此,一个人类的读者头脑发现,看看没有新行的源代码,或者在任何合法的地方换行,对于编译器来说非常不愉快,因为它说:没关系。

因此,像dos2unix这样的工具不应该对可能产生“语义”差异的源代码进行任何更改。

当然:真正的答案是:不要把时间花在担心断线上。将它投入到从1999年到2018年移动你的整个系统(通过用git代替CVS,用例如maven / gradle代替Ant)。

另一答案

不,它所做的就是处理行结尾。

另一答案

Practical test

首先,我创建了一个名为Main.java的Linux行结尾的测试文件,这在Linux编译时不出所料。

0x63 [ c]  0x6c [ l]  0x61 [ a]  0x73 [ s]  0x73 [ s]  
0x20 [  ]  0x4d [ M]  0x61 [ a]  0x69 [ i]  0x6e [ n]  
0x20 [  ]  0x7b [ {]  0x0a [
]  0x7d [ }]  0x0a [
]  
0x0a [
]

转换为DOS结尾给出了这样的结论:

0x63 [ c]  0x6c [ l]  0x61 [ a]  0x73 [ s]  0x73 [ s]  
0x20 [  ]  0x4d [ M]  0x61 [ a]  0x69 [ i]  0x6e [ n]  
0x20 [  ]  0x7b [ {]  0x0d [
]  0x0a [
]  0x7d [ }]  
0x0d [
]  0x0a [
]  0x0d [
]  0x0a [
]

哪个仍然编译,然后转换回来:

0x63 [ c]  0x6c [ l]  0x61 [ a]  0x73 [ s]  0x73 [ s]  
0x20 [  ]  0x4d [ M]  0x61 [ a]  0x69 [ i]  0x6e [ n]  
0x20 [  ]  0x7b [ {]  0x0a [
]  0x7d [ }]  0x0a [
]  
0x0a [
]

这和以前一样

Line endings

Windows(dos)和Linux / Mac(unix)行结尾之间的区别在于,以unix结尾的行是 ,而以dos结尾的行是

Results

  • 由于unix2dos / dos2unix仅更改行结尾,因此不会更改内容
  • 至少在Linux上,javac可以使用任一行成功结束编译源文件。

以上是关于关于Java文件的Dos2unix的主要内容,如果未能解决你的问题,请参考以下文章

dos2unix,去掉Linux下文件中的^M

dos2unix命令找不到怎么办

dos2unix 批量转化文件

如何在片段中使用 GetJsonFromUrlTask​​.java

使用dos2unix批量转换文件

使用dos2unix批量转换文件