Правильно ли я полагаю, что единственная разница между "файлами окон" и "файлами unix" - это разрыв строк?
У нас есть система, которая была перенесена с Windows-машины на Unix-машину и имеет проблемы с форматом.
Мне нужно автоматизировать перевод между unix/windows, прежде чем файлы будут доставлены в систему в нашей "транспортной системе". Мне, вероятно, понадобится что-то, чтобы определить текущий формат и что-то, чтобы преобразовать его в другой формат. Если это просто новая строка, большая разница, то я рассматриваю только чтение файлов с помощью java.io. Насколько я знаю, они могут обрабатывать оба с readLine. А затем просто напишите каждую строку с помощью
while (line = readline)
print(line + NewlineInOtherFormat)
....
Резюме:
Это только разница в текстовых файлах, в которых UNIX использует один Line Feed (LF) для обозначения новой строки, Windows использует Return/Line Feed (CRLF) для каретки, а Mac использует только CR.
на который Cebjyre уточняется:
OS X использует LF, то же, что и UNIX - MacOS 9 и ниже, использовал CR, хотя
Также может быть разница в кодировке символов для национальных символов. "Unix-encoding" не существует, но многие версии Linux используют UTF-8 в качестве кодировки по умолчанию. Mac OS (которая также является unix) использует собственную кодировку (macroman). Я не уверен, что такое кодировка по умолчанию Windows.
В дополнение к различиям в новой строке знак байтового байта может вызвать проблемы, если файлы обрабатываются как Unicode в Windows.
Однако другой набор проблем, с которыми вы столкнетесь, может быть связан с одиночными/многобайтовыми кодировками символов. Если вы видите странные неожиданные символы (не в конце строки), это может быть причиной. Особенно, если вы видите квадратные квадратики, вопросительные знаки, перевернутые вопросительные знаки, дополнительные символы или неожиданные акцентированные символы.
В unix файлы, начинающиеся с. скрыты. В Windows это флаг файловой системы, к которому у вас, вероятно, нет простого доступа. Это может привести к тому, что файлы, которые должны быть скрыты, теперь становятся видимыми на клиентских машинах.
Разрешения для файлов различаются между ними. Вы, вероятно, обнаружите, что при копировании файлов в систему unix файлы теперь принадлежат пользователю, который выполнял копирование и имел ограниченные права. Вам нужно будет использовать chown/chmod, чтобы убедиться, что у правильных пользователей есть к ним доступ.
Существуют инструменты, помогающие решить эту проблему:
Если вас просто интересует содержимое текстовых файлов, то да, окончание строк отличается. Взгляните на что-то вроде dos2unix, это может помочь здесь.
Как предлагает pauldoo, такие инструменты, как dos2unix, могут быть очень полезными. Обратите внимание, что это может быть в вашей системе linux/unix как fromdos или tofrodos, или, возможно, даже в том случае, когда утилита общего назначения перекодируется.
Справка по java-кодированию
При написании файлов или чтении из файлов (которые вы контролируете), часто стоит указать, какую кодировку использовать, как это допускается большинством методов Java. Тем не менее, также гарантируя, что соответствие языку системы может сэкономить много боли