Различные форматы файлов хранятся по-разному

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

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

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

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

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


person Geek    schedule 27.05.2009    source источник


Ответы (6)


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

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

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

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

person Jon    schedule 27.05.2009
comment
Как Big или Little Endian связаны с хранилищем файлов? Я понимаю, что файл класса Java может иметь целые числа и числа с плавающей запятой, которые могут влиять на разные системы с порядком байтов. Но какое это имеет значение, когда вы читаете файл. Например, если я читаю текстовый файл, какое значение имеет порядок байтов? - person Geek; 27.05.2009
comment
Порядок байтов - это просто соглашение о порядке байтов. Когда файл записывается, он сохраняется либо с прямым, либо с прямым порядком байтов, либо с прямым порядком байтов - в зависимости от процессора. Если мы прочитаем это обратно, мы должны знать, как это было написано, для этого у нас часто есть метка порядка байтов. См. stackoverflow.com/questions/701624/ - person Jon; 27.05.2009

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

person Johan Bresler    schedule 27.05.2009
comment
Думаю, я согласен с тобой. Различные форматы файлов должны храниться по-разному, и ОС должна иметь возможность хранить и читать их таким образом. - person Geek; 27.05.2009

Короткий ответ: это зависит от обстоятельств.

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

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

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

person mouviciel    schedule 27.05.2009

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

Новые строки

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

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

Концентрация может быть разной, но часто это имеет значение только для юникода и двоичных данных.

person Georg Schölly    schedule 27.05.2009
comment
вы путаете вопрос. он спросил, какие изменения в файле. ответ - ничего. в файле, скопированном на unix-машину, по-прежнему будут символы новой строки DOS. - person SpliFF; 27.05.2009
comment
Если ничего не меняется, зачем мне делать dos2Unix? - person Geek; 27.05.2009
comment
потому что ваш РЕДАКТОР изменился. это соглашение о редактировании, принятое редакторами на этой платформе, не более того. - person SpliFF; 27.05.2009

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

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

Чтобы уточнить, в ОС Linux нет ничего, что требует, чтобы vim или emacs использовали соглашение unix. Фактически, многие редакторы и приложения могут обнаруживать кодировку новой строки и адаптироваться. Обработка файлов зависит от программного обеспечения, а не от операционной системы.

person SpliFF    schedule 27.05.2009

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

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

person Peter Stuifzand    schedule 27.05.2009