Чувствительные к регистру расширения файлов в Windows и Linux

10

В Linux вы можете иметь файлы example.JPGи example.jpgв том же каталоге.

В Windows у вас есть расширения с учетом регистра, но вы не можете поместить эти два файла в один каталог. Почему бы нет?

wvdz
источник
1
Возможен ли дубликат Все версии Windows нечувствительны к регистру? (возможно, это лучший вопрос)
Коул Джонсон
FAT держал расширение отдельно от базового имени, а ОС добавляла .для целей ввода и отображения. (Я полагаю, можно с уверенностью сказать, что практически никто не использует FAT для чего-либо, кроме функциональной совместимости в наши дни.) Я не знаю точно, как NTFS делает это, но я полагаю, что это похоже на любую основную файловую систему Linux, которая просто обрабатывает имя файла как строка символов. Здесь нет ничего особенного в расширении файла: оно просто по соглашению и рассматривается файловой системой как часть имени файла.
CVn
Посмотрите ObCaseInsensitiveи superuser.com/q/266110/59271
user541686
@ Grawity это не просто случай с Томайто, Томахто?
wvdz

Ответы:

32

В Windows у вас есть расширения с учетом регистра, но вы не можете поместить эти два файла в один каталог. Почему бы нет?

Если диск отформатирован как NTFS, вы можете использовать как example.JPGи example.jpg.

Тем не менее, если вы попытаетесь открыть один из этих файлов в приложении Win32 , например в «Блокноте», у вас будет доступ только к одному из файлов , независимо от того, какое имя файла вы вводите в диалоговом окне «Открыть файл».


Имена файлов чувствительны к регистру на томах NTFS

Как часть требований к соответствию POSIX, файловая система Windows NT (NTFS) предоставляет соглашение о присвоении имен файлов и каталогов с учетом регистра. Хотя NTFS и подсистема POSIX хорошо справляются с чувствительностью к регистру, 16-разрядные приложения на базе Windows, MS-DOS, OS / 2 и Win32 этого не делают .

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

CASE.TXT
case.txt
case.TXT

Тем не менее, если вы попытаетесь открыть один из этих файлов в приложении Win32 , например в «Блокноте», у вас будет доступ только к одному из файлов , независимо от того, какое имя файла вы вводите в диалоговом окне «Открыть файл».

...

NTFS поддерживает два слегка отличающихся режима работы, которые могут быть выбраны подсистемой приложения, взаимодействующей с NTFS. Первый полностью учитывает регистр и требует, чтобы имена файлов, предоставляемые приложением, совпадали с именами, хранящимися на диске, включая случай, если файл на диске должен быть выбран. Второй режим работы - это сохранение регистра, но без учета регистра. Это означает, что приложения могут выбирать файлы на диске, даже если указанное имя отличается в случае от имени, сохраненного на диске. Обратите внимание, что оба режима сохраняют регистр, использованный для создания файлов. Отмеченное здесь различие в поведении применяется только тогда, когда приложению необходимо найти существующий файл. POSIX использует преимущества режима полного регистра, в то время как MS-DOS, WOW иПодсистемы Win32 используют режим без учета регистра .

Имена исходных файлов чувствительны к регистру на томах NTFS :


На практике я не смог этого добиться

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

В POSIX используется полный режим с учетом регистра, в то время как подсистемы MS-DOS, WOW и Win32 используют режим без учета регистра.

Для включения Posix смотрите:

ДэвидПостилл
источник
Это для меня новость. Я должен был временно отрицать это, хотя, хотя у вас есть цитаты, на практике я не смог этого сделать . Не могли бы вы дать инструкции о том, как это можно сделать на практике?
MDMoore313
7
@ BigHomie Это оболочка Windows, которая мешает вам. NTFS может хранить a.JPG и a.jpg в одном каталоге. Если вы включите подсистему Unix (не рекомендуется), имена файлов также будут чувствительны к регистру в оболочке Windows Explorer. technet.microsoft.com/en-us/library/cc771470.aspx
Фуркан Омай
1
@FurkanOmay Я вижу, старая добрая подсистема Unix, спасибо за это.
MDMoore313
1
@FurkanOmay Я знал, что ты имел в виду;)
MDMoore313
@BigHomie Ответ обновлен, чтобы объяснить, как включить posix
DavidPostill
6

NTFS чувствительна к регистру (и в зависимости от того, как вы смотрите на стекло, это может быть хорошо или плохо). В действительности, достижение нечувствительности к регистру было проблемой на ранних этапах, так как вам не нужно было различать значения ASCII для аз и аз.

Невозможно сделать Windows (ОС) чувствительной к регистру, даже если NTFS (файловая система), используемая в настоящее время ОС Windows, может поддерживать для соответствия POSIX.

Согласно Microsoft, вы можете иметь example.JPG и example.jpg в одном и том же каталоге на NTFS ( нажмите здесь ), но ОС (все версии Windows) не поддерживает его, что делает бессмысленной файловую систему :)

Как часть требований к соответствию POSIX, файловая система Windows NT (NTFS) предоставляет соглашение о присвоении имен файлов и каталогов с учетом регистра . Хотя NTFS и подсистема POSIX хорошо справляются с чувствительностью к регистру, 16-разрядные приложения на базе Windows, MS-DOS, OS / 2 и Win32 этого не делают.

Дивакар Равикумар
источник
1
Нечувствительность к регистру не так сложна, особенно в таких кодировках, как ASCII. DOS сделал это, CP / M сделал это. Нечувствительность к регистру наряду с сохранением кейса труднее всего взломать Конечно, это не сложно сделать, но сложнее сделать последовательным образом, когда вам может повезти иметь 16-32 КБ ОЗУ для игры, и для этого нужно, чтобы приложение выполняло действительно полезные вещи.
CVn