Различия между файлами Unix и Windows - PullRequest
15 голосов
/ 20 августа 2008

Правильно ли я полагаю, что единственная разница между "windows-файлами" и "unix-файлами" - это перенос строки?

У нас есть система, которая была перемещена с компьютера с Windows на компьютер с Unix, и у нас возникли проблемы с форматом.

Мне нужно автоматизировать перевод между unix / windows, прежде чем файлы будут доставлены в систему в нашей "транспортной системе". Мне, вероятно, понадобится что-то, чтобы определить текущий формат, и что-то, чтобы преобразовать его в другой формат. Если это просто новая строка, это большая разница, то я рассматриваю просто чтение файлов с помощью java.io. Насколько я знаю, они способны справиться с обоими с readLine. А затем просто напишите каждую строку обратно с

while (line = readline)
    print(line + NewlineInOtherFormat)
....
<ч />

Резюме:

samjudson

Это разница только в текстовых файлах, где UNIX использует одиночный перевод строки (LF) для обозначения новой строки, Windows использует возврат каретки / перевод строки (CRLF), а Mac использует только CR.

, к которым Cebjyre уточняет:

OS X использует LF, так же, как UNIX - MacOS 9 и ниже использовали CR, хотя

Mo

Также может быть разница в кодировке национальных символов. Не существует "unix-encoding", но многие linux-варианты используют UTF-8 в качестве кодировки по умолчанию. Mac OS (которая также является Unix) использует свою собственную кодировку (macroman). Я не уверен, что кодировка Windows по умолчанию.

Макдауэлл

Помимо различий в новой строке, метка порядка байтов может вызвать проблемы, если файлы рассматриваются как Unicode в Windows.

Cheekysoft

Однако другой набор проблем, с которыми вы можете столкнуться, может быть связан с однобайтовыми / многобайтовыми кодировками символов. Если вы видите странные неожиданные символы (не в конце строки), то это может быть причиной. Особенно, если вы видите квадратные квадраты, вопросительные знаки, перевернутые вопросительные знаки, дополнительные символы или неожиданные символы с акцентом.

Sadie

В unix - файлы, начинающиеся с a. скрыты В Windows это флаг файловой системы, к которому у вас, вероятно, нет простого доступа. Это может привести к тому, что файлы, которые должны быть скрыты, теперь становятся видимыми на клиентских компьютерах.

Права доступа к файлам могут различаться. Когда вы копируете файлы в систему Unix, вы, вероятно, обнаружите, что файлы теперь принадлежат пользователю, который сделал копирование, и имеют ограниченные права. Вам нужно будет использовать chown / chmod, чтобы убедиться, что правильные пользователи имеют к ним доступ.

Существуют инструменты, помогающие решить проблему:

pauldoo

Если вас просто интересует содержание текстовых файлов, то да, окончания строк разные. Взгляните на что-то вроде dos2unix, это может помочь здесь.

Cheekysoft

Как полагает Поло, такие инструменты, как dos2unix, могут быть очень полезны. Обратите внимание, что они могут быть в вашей системе Linux / Unix как fromdos или tofrodos, или, возможно, даже как перекодировать набор инструментов общего назначения.

Помощь по кодированию Java

Cheekysoft

При записи в файлы или чтении из файлов (которые вы контролируете) часто стоит указать используемую кодировку, так как большинство методов Java позволяют это. Однако, также гарантируя, что системные языковые соответствия могут сэкономить много времени

Ответы [ 6 ]

11 голосов
/ 20 августа 2008

Это разница только в текстовых файлах, где UNIX использует одиночный перевод строки (LF) для обозначения новой строки, Windows использует возврат каретки / перевод строки (CRLF), а Mac использует только CR.

Двоичные файлы не должны иметь различий (т.е. JPEG на машине с Windows будет байтом для байта такой же, как и тот же JPEG на коробке с Unix.)

4 голосов
/ 20 августа 2008

Также может быть разница в кодировке национальных символов. Не существует "unix-encoding", но многие linux-варианты используют UTF-8 в качестве кодировки по умолчанию. Mac OS (которая также является Unix) использует свою собственную кодировку (macroman). Я не уверен, что кодировка Windows по умолчанию.

Но это может быть еще одним источником проблем (кроме разных разрывов строк).

Какие у тебя проблемы? Проблемы, связанные с разрывом строки, можно легко исправить с помощью программ dos2unix или unix2dos на unix-машине

2 голосов
/ 20 августа 2008

В дополнение к приведенным ответам могут возникнуть проблемы с различными файловыми системами:

  • В unix файлы, начинающиеся с . , скрыты. В Windows это флаг файловой системы, к которому у вас, вероятно, нет простого доступа. Это может привести к тому, что файлы, которые должны быть скрыты, теперь становятся видимыми на клиентских компьютерах.

  • Права доступа к файлам могут различаться. Когда вы копируете файлы в систему Unix, вы, вероятно, обнаружите, что файлы теперь принадлежат пользователю, который сделал копирование, и имеют ограниченные права. Вам нужно будет использовать chown / chmod , чтобы убедиться, что правильные пользователи имеют к ним доступ.

2 голосов
/ 20 августа 2008

Если вас просто интересует содержание текстовых файлов, то да, окончания строк разные. Взгляните на что-то вроде dos2unix , это может помочь здесь.

(Конечно, есть много других вещей, которые отличают файлы Unix и Windows, но я не думаю, что вас сейчас интересуют эти другие различия.)

1 голос
/ 20 августа 2008

Как полагает Поло, такие инструменты, как dos2unix, могут быть очень полезны. Обратите внимание, что они могут быть в вашей системе Linux / Unix как fromdos или tofrodos , или, возможно, даже как набор инструментов общего назначения перекодировать .

Однако другой набор проблем, с которыми вы можете столкнуться, может быть связан с однобайтовыми / многобайтовыми кодировками символов. Если вы видите странные неожиданные символы (не в конце строки), то это может быть причиной. Особенно, если вы видите квадратные квадраты, вопросительные знаки, перевернутые вопросительные знаки, дополнительные символы или неожиданные символы с акцентом.

Выполнение команды locale в вашем * nix окне покажет вам, каков системный языковой стандарт. Если это отличается от кодировки, используемой в текстовых файлах, которые были переданы с компьютера Windows, то это может иногда вызывать проблемы, в зависимости от использования этих файлов. Вы можете использовать очень мощную команду recode , чтобы попытаться преобразовать различные кодировки, а также любые проблемы с окончанием строки. recode -l покажет вам все форматы и кодировки, между которыми инструмент может конвертироваться. Вероятно, это будет ОЧЕНЬ длинный список.

При записи в файлы или чтении из файлов (которые вы контролируете) часто стоит указывать используемую кодировку, поскольку большинство методов Java позволяют это. Однако, также гарантируя, что соответствие языкового стандарта системы может сэкономить много боли.

1 голос
/ 20 августа 2008

Помимо различий в новой строке, метка порядка байтов может вызвать проблемы, если файлы рассматриваются как Unicode в Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...