![]() |
![]() |
|
![]() |
||||||||||||||||||
![]() |
![]() |
![]() |
||||||||||||||||
|
![]() |
|
![]() |
|
||||||||||||||
![]() |
![]() |
19 - Long File Name (LFN) / MSDN rus / Visual C++ |
![]() |
Шаг 19 - Long File Name (LFN)Ранее в MS DOS для имен файлов существовало всем не безызвестное правило 8.3. В операционных системах Windows 9x, NT 4.0 есть возможность импользовать длинные имена файлов. Реализация длинных имен строится на основе FAT (File Allocation Table). В MS DOS для иинформации о файле используется одна запись. Для реализации длинных имен и совместимости с MS DOS для длинных имен файлов используется несколько записей в этой таблице. Только этим записям присваиваются следующие атрибуты. Только чтение Системный Скрытый Метка тома При таком наборе атрибутов данные записи не видит ни одна программа как и сама MS DOS, зато хорошо различает Windows вот на этом трюке и основана совместимость с ранними версиями операционных систем. И тут возникает интересная ситуация. Для программиста в Windows все равно. Функция типа CreateDirectory DeleteFile CreateFile OpenFile ...... Уже умеют работать с длинными именами и заботы мало. Даже старые программы для MS DOS могут работать с файлами, у которых длинные имена до тех пор пока их не: Переименуют Переместят Есть функции, которые умеют преобразовывать файлы в короткие и по коротким получать длинные. Например GetLongPathName или GetShortPathName. Вот пример кода: #include "stdafx.h" #include "afx.h" #include "iostream.h" int main(int argc, char* argv[]) { DWORD dwResult; char s[256]; char buffer[256]; lstrcpy(s,"c:\\mycatalog code.txt"); dwResult=GetShortPathName(s ,buffer,256); if (!dwResult) cout << "Error "; else cout << buffer<< endl; return 0; } А вот результат: c:\MYCATA~1.TXT Press any key to continue Обратите внимание файл c:\\mycatalog code.txt должен обязательно существовать на диске, иначе у функции будет ошибка выполнения. Дело в том, что короткое имя получаемое в данном случае готовится по определенным правилам и в этих правилах сказано, что имя зависит от других коротких имен. Давайте посмотрим правила формирования коротких имен.
| | Автор Каев Артем. |
![]() |
![]() |
![]() |
|