Почему можно конвертировать файл, просто переименовав его расширение?

Когда вы переименовываете файлы с другим расширением, в большинстве случаев это не работает. Но если у вас есть файл .png, вы можете просто переименовать image.png в image.jpeg или image.gif, и он автоматически преобразуется в другой формат и работает отлично. Есть ли сходство между этими форматами, которое позволяет это сделать? Я заметил это несколько лет назад и заинтересовался, когда пытался преобразовать файл .dvi в файл .pdf; просто переименование это сработало!

12
задан 18 May 2017 в 21:57

3 ответа

Переименование файлов .png в .jpeg и .gif работает, потому что программа, связанная и назначенная для открытия этих файлов, одинакова, и когда она видит расширения, которые она может открыть, она просто открывает их, потому что они все файлы изображений и программа может открыть их.

Программа по умолчанию - EOG (Eye of Gnome), как говорит другой ответчик. Даже если вы удалите расширение, оно все равно может открыть их.

Что касается dvi и pdf, снова оба типа файлов открываются одной и той же программой, которая называется evince. Итак, там происходит то же самое.

0
ответ дан 18 May 2017 в 21:57

Это то, что, вероятно, происходит. Приложение, предназначенное для открытия файлов с указанными вами типами файлов, одинаково для всех. .gif, .jpg, .png: все они обрабатываются EOG (GNOME's Gnome). Я подозреваю, что это приложение не определяет тип файла на основе расширения, скорее оно ищет магическое число .

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

Это все может относиться к Ubuntu, Windows - это совсем другая история. По умолчанию Explorer применяет поведение, которое отключает расширение файла от имени файла. Таким образом, файл с именем «document.pdf» будет отображаться как «документ», а переименование его в «document.dvi» будет фактически обрабатываться как «document.dvi.pdf». Вирусы иногда используют эту «особенность», заставляя пользователя поверить, что они открывают .jpg, в то время как на самом деле их обманывают для запуска вредоносного exe! ​​

Чтобы быть действительно уверенным в типах файлов, есть команда под названием file, который показывает подробную информацию о файле.

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

0
ответ дан 18 May 2017 в 21:57

Есть ли какое-то сходство между этими форматами, которое позволяет это сделать?

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

Вы даже можете проверить, действительно ли есть какая-либо разница между двумя файлами, сравнивая их, используя утилиту GNU cmp вместе с параметрами --verbose --bytes=100 для ограничения и просмотреть различные байты. Я также рекомендую вам отображать заголовок на вашем терминале с помощью less, чтобы не переполнить его, или, что еще лучше, head -c 100, чтобы просмотреть только первые 100 байтов, чтобы получить представление о что на самом деле читает cmp и ваша ОС. Ни в Ubuntu, ни в Windows я не заметил разницы. Использование Paint в Windows для сохранения формата PNG в JPG действительно изменило заголовок с PNG на JFIF, а затем и его содержимое.

Лично я больше знаком с файловой системой Windows. Расширение существует, чтобы ОС могла быстрее идентифицировать программу, с которой она связана, и может быть изменена пользователем, выбрав программу по умолчанию при выборе «Открыть с помощью ...» в контекстном меню. Вы также можете просмотреть все расширения, которые Windows распознает в установленных программах, запустив regedit и перейдя к HKCR\.txt, чтобы выяснить, как Windows воспринимает расширение файла «txt».Я лично использовал редактор реестра, чтобы добавить строку Content Type со значением text/plain к различным расширениям, чтобы иметь возможность предварительно просмотреть текстовое содержимое файла в проводнике Windows. Панель предварительного просмотра.

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

0
ответ дан 27 January 2021 в 16:42

Другие вопросы по тегам:

Похожие вопросы: