Различные форматы файлов хранятся по-разному - PullRequest
2 голосов
/ 27 мая 2009

Это может быть действительно тривиальным.

Зависит ли ОС от хранилища файлов?

Почему текстовые файлы изменяются при перемещении из Dos в Unix, если редактор в Unix интерпретирует определенные символы по-разному или сам файл изменяется при перемещении из Dos в Unix и, следовательно, из утилиты Dos в Unix.

Почему файл классов Java можно переместить из DOS в Unix, и это не изменится?

Что такое независимое от платформы хранилище?

Ответы [ 6 ]

1 голос
/ 27 мая 2009

Краткий ответ: это зависит.

Текстовые файлы не изменяются сами по себе при перемещении из DOS в Unix: попробуйте переместить их, например, с помощью USB-ключа.

Они могут измениться при копировании с использованием стороннего программного обеспечения: ftp имеет возможность обрабатывать преобразования текста.

Более того, это зависит не только от ОС, но и от файловой системы. В Mac OS до OS (файловая система HFS) файлы хранились на двух ветвях: данных и ресурсах. При копировании в файловую систему без концепции fork файл может быть скопирован как один файл, содержащий как данные, так и ветки ресурсов (AppleSingle), или как два файла в двух отдельных каталогах (AppleDouble).

1 голос
/ 27 мая 2009

Хранилище файлов не зависит от операционной системы, даже если содержимое может быть одинаковым, интерпретация отличается. Дело в том, что много лет назад мне пришлось переносить (Business Basic) программы и данные с мини-компьютера Datageneral на DOS. Файлы сталкивались с 8-битной кодировкой и должны были быть переведены (в 7-битные), прежде чем их можно было «понять» в DOS.

1 голос
/ 27 мая 2009

Существует принципиальная разница в способе хранения байтов и символов. См:

http://www.joelonsoftware.com/articles/Unicode.html

для описания различных наборов символов и того, как они различаются в разных операционных системах (плюс многое другое).

Файлы классов Java являются двоичными и всегда хранятся в формате Big Endian. Это означает, что независимо от того, с какой операционной системой они перемещаются, они всегда будут одинаковыми.

0 голосов
/ 27 мая 2009

В общем случае файловая система будет хранить файл так, как его просили записать. Программа, которая читает файл, будет интерпретировать байты из файла.

Например, в DOS (и Windows) символ новой строки состоит из двух байтов, а в Unix - только один байт. Но это только стандарт. Программы на Unix могут читать файлы с двухбайтовыми символами новой строки. Эти программы просто должны знать, что такое переводы строк.

0 голосов
/ 27 мая 2009

Есть два отличия:

Newlines

  • Unix: \ n
  • Mac OS до X: \ r
  • Windows: \ r \ n

Маленький / большой порядок байтов

Edianess может быть другим, но это часто имеет значение только для Unicode и двоичных данных.

0 голосов
/ 27 мая 2009

Нет, файлы не меняются. Только условности их редактирования.

Что может измениться, так это структура файловой системы и метаданные, используемые для каталогизации и составления списка каталогов и т. Д. (Т. Е. Метки времени). Кроме того, файлы, естественно, будут зашифрованы в зашифрованной файловой системе, но сложности файловой системы почти всегда прозрачны для приложения, считывающего файл через системные вызовы (они будут актуальны, если вы пишете средство изменения размера раздела или другой низкоуровневый дисковый инструмент).

Для пояснения, в ОС Linux нет ничего, что требует vim или emacs для использования соглашения Unix. На самом деле многие редакторы и приложения могут обнаружить кодирование новой строки и адаптироваться. Как обрабатывать файлы, это зависит от программного обеспечения, а не от ОС.

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