我正在尝试解析Linux/etc/passwd
Java 中的文件。我目前正在阅读每一行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
?
甚至不到两天前:不同线路在不同平台结束的历史原因
EDIT
原作者注:
“我发现我有一个不同的错误导致了这个问题。忽略问题”
From 维基百科:
- LF:Multics、Unix 和类 Unix 系统(GNU/Linux、AIX、Xenix、苹果系统
X、FreeBSD 等)、BeOS、Amiga、RISC
操作系统及其他
- CR+LF:DEC RT-11 和大多数其他早期非 Unix、非 IBM 操作系统、CP/M、
MP/M,DOS、OS/2、微软Windows,
塞班操作系统
- CR:Commodore 机器,Apple II 系列,Mac 操作系统最高版本 9和
操作系统-9
我将其翻译成这些行结尾一般来说:
- 视窗:
'\r\n'
- Mac(操作系统 9-):
'\r'
- Mac(操作系统 10+):
'\n'
- Unix/Linux:
'\n'
您还需要让您的扫描器/解析器处理 unix 版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)