当前位置:  开发笔记 > 编程语言 > 正文

Windows和Linux之间的行结尾是否不同?

如何解决《Windows和Linux之间的行结尾是否不同?》经验,为你挑选了2个好方法。

我试图/etc/passwd用Java 解析Linux 文件.我正在阅读java.util.Scanner课程中的每一行,然后java.lang.String.split(String)用来分隔每一行.

问题是该行:

list:x:38:38:Mailing List Manager:/var/list:/bin/sh" 

被扫描仪视为3条不同的线:

    list:x:38:38:Mailing

    List

    Manager...

当我输入一个我没有从Linux获得的新文件时,Scanner正确解析它.

有什么我不了解Linux中的新行吗?

显然,解决方法是在不使用扫描仪的情况下解析它,但它并不优雅.有谁知道这样做的优雅方式?

有没有办法将文件转换为可以使用的文件Scanner


甚至两天前:不同线路在不同平台结束的历史原因

编辑

原作者提供的说明:

"我发现我有一个不同的错误导致问题.无视问题"

Michael Hare.. 47

来自维基百科:

LF:Multics,Unix和类Unix系统(GNU/Linux,AIX,Xenix,Mac OS X,FreeBSD等),BeOS,Amiga,RISC OS等

CR + LF:DEC RT-11和大多数其他早期非Unix,非IBM操作系统,CP/M,MP/M,DOS,OS/2,Microsoft Windows,Symbian OS

CR:Commodore机器,Apple II系列,Mac OS,最高版本9和OS-9

我翻译成这些行结束这个一般:

视窗: '\r\n'

Mac(OS 9-): '\r'

Mac(OS 10+): '\n'

在Unix/Linux: '\n'

您还需要让扫描仪/解析器处理unix版本.



1> Michael Hare..:

来自维基百科:

LF:Multics,Unix和类Unix系统(GNU/Linux,AIX,Xenix,Mac OS X,FreeBSD等),BeOS,Amiga,RISC OS等

CR + LF:DEC RT-11和大多数其他早期非Unix,非IBM操作系统,CP/M,MP/M,DOS,OS/2,Microsoft Windows,Symbian OS

CR:Commodore机器,Apple II系列,Mac OS,最高版本9和OS-9

我翻译成这些行结束这个一般:

视窗: '\r\n'

Mac(OS 9-): '\r'

Mac(OS 10+): '\n'

在Unix/Linux: '\n'

您还需要让扫描仪/解析器处理unix版本.



2> Chase Seiber..:

您可以从以下位置获取当前操作系统的标准行结尾:

System.getProperty("line.separator")


还是`System.lineSeparator()`?
推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有