我从不同的系统获取不同格式的文件,我需要将它们导入到我们的数据库中。导入过程的一部分是检查行长度以确保格式正确。
我们似乎在处理来自添加了一个字符的 UNIX 系统的文件时遇到了问题。我怀疑这是由于 UNIX 和 Windows 平台上的回车编码不同所致。
除了检查该行的最后一个字符之外,是否有其他方法可以检测文件是在哪个文件系统上创建的?或者也许是一种将文件读取为文本而不是二进制的方式,我怀疑这是问题所在?
多谢你们 !
Unix系统使用\n
windows 使用的行结尾\r\n
和Mac使用\r
。
您无法检测到文件系统,因为它根本不重要。例如,如果我的编辑器支持的话,我可以在 Windows 上使用 \n 。这只是这些操作系统的标准,而不是要求。
正确的方法 - 假设你没有一个可以正确标记的函数,无论文件使用哪一行结尾 - 是搜索 \n 或 \r ,然后结束当前行并从剩余数据中删除所有字符在开始下一行之前是 \r 或 \n。
但是,如果您有空行并且需要保留它们,这将导致问题。在这种情况下,您必须更仔细地查看换行符:
- 读取 \n 时,结束当前行并开始下一行
- 当读取 \r 时,结束当前行,如果下一个字符是 \n,则跳过它,并开始下一行,否则立即开始新行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)