[英]Differences between unix and windows files
假设“windows文件”和“unix文件”之间的唯一区别是换行符,我是否正确?
我们有一个系统已从Windows机器移动到unix机器,并且格式有问题。
我需要在文件在“transportsystem”中传送到系统之前自动执行unix / windows之间的转换。 我可能需要一些东西来确定当前的格式以及将其转换为其他格式的东西。 如果它只是新行有很大的不同,那么我正在考虑用java.io读取文件。 据我所知,他们可以使用readLine处理这两个问题。 然后用它来写回每一行
while (line = readline)
print(line + NewlineInOtherFormat)
....
Cebjyre详细阐述:
存在帮助解决问题的工具:
帮助java编码
这只是文本文件的差异,其中UNIX使用单个换行符(LF)来表示新行,Windows使用回车符/换行符(CRLF),而Mac仅使用CR。
二进制文件应该没有区别(即Windows机器上的JPEG将是字节,字节与unix盒上的相同JPEG相同。)
国家字符的字符编码也可能有所不同。 没有“unix-encoding”,但许多linux-variants使用UTF-8作为默认编码。 Mac OS(也是一个unix)使用自己的编码(macroman)。 我不确定,Windows默认编码是什么。
但这可能是另一个麻烦的来源(除了不同的阵容)。
你有什么问题? 使用unix-machine上的dos2unix或unix2dos程序可以轻松纠正与换行相关的问题
如果您只对文本文件的内容感兴趣,那么行结尾是不同的。 看看像dos2unix这样的东西,它可能在这里有所帮助。
(当然还有许多其他因素使unix和windows文件不同,但我认为你现在对其他差异不感兴趣。)
除了给出的答案,您可能会发现不同文件系统的问题:
在unix上,以a开头的文件。 是隐藏的。 在Windows上,它是一个您可能无法轻松访问的文件系统标志。 这可能导致现在应该隐藏的文件在客户端计算机上变得可见。
文件权限因二者而异。 当您将文件复制到unix系统时,您可能会发现文件现在属于进行复制并具有有限权限的用户。 您需要使用chown / chmod来确保正确的用户可以访问它们。
除了新行差异之外,如果文件在Windows上被视为Unicode,则字节顺序标记可能会导致问题。
正如pauldoo所说,像dos2unix这样的工具非常有用。 请注意,这些可能在您的linux / unix系统上,如fromdos或tofrodos ,或者甚至可能作为通用工具箱重新编码 。
但是,您可能遇到的另一组问题可能与单/多字节字符编码有关。 如果你看到奇怪的意外字符(不在行尾)那么这可能是原因。 特别是如果您看到方框,问号,颠倒的问号,额外的字符或意外的重音字符。
在* nix框上运行命令区域设置将告诉您系统区域设置是什么。 如果这与从Windows计算机传输的文本文件中使用的编码不同,则这有时会导致问题,具体取决于这些文件的用法。 您可以使用非常强大的recode命令尝试在不同的字符集之间进行转换以及任何行结束问题。 recode -l将显示该工具可以在其间转换的所有格式和编码。 它可能是一个非常长的列表。
当写入文件或从文件中读取(您可以控制)时,通常值得指定要使用的编码,因为大多数Java方法都允许这样做。 但是,确保系统区域设置匹配可以节省很多痛苦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.