Одним из важнейших аспектов любой операционной системы является работа с файлами. В Windows 95/98/NT функции доступа к файлам и дискам значительно расширены по сравнению с MS-DOS за счет использования 32-разрядных чисел и поддержки сразу несколько файловых систем: FAT (file allocation table, таблица размещения файлов), NTFS (файловую систему NT) и CDFS (файловая система CD-ROM).
Основной файловой системой Windows 95/98 является FAT. FAT позволяет присваивать каталогам и файлам имена до 255 символов длиной. Эти имена хранятся на диске в кодировке Unicode, а это значит, что они не нарушаются при копировании в системы использующие другие языки. Еще одна особенность файловой системы FAT в том, что с каждым файлом в ней связаны 3 временные метки: время создания файла, время последнего к нему обращения и время последней модификации.
Windows NT поддерживает не только FAT, но и NTFS, которая совместима с FAT и имеет свои дополнительные особенности. NTFS позволяет восстанавливать данные после сбоя системы, работает с внешними носителями высокой емкости, различает регистр букв в именах файлов. В NTFS добавлены средства защиты файлов от вирусов (введен атрибут файла "только для исполнения").
Поскольку Win32 поддерживает несколько файловых систем, все они должны подчинятся общим правилам. Файловые системы должна организовывать файлы в иерархическое дерево каталогов – так, как это делает FAT. Имена каталогов и файлов в полном имени файла (pathname) отделяются обратной косой чертой (\). Кроме правил формирования полного имени, действует и правила именования каталогов и файлов:
· полное имя файла завершается нулевым символом;
· имена файлов и каталогов не должны содержать разделительного символа (\), символов с ASCII-кодами от 0 до 31, специальных символов вроде (<,>,:," или | /), а также символов, явно запрещенных в какой либо файловой системе;
· имена файлов и каталогов могут включать буквы разного регистра, но при поиске файлов и каталогов регистр букв не учитывается. Если файл с именем ReadMe.Txt существует, то создание нового файла с именем README.TXT уже не допускается;
· точка (.) идентифицирует текущий каталог. Например,.\ README.TXT означает, что файл README.TXT находится в текущем каталоге;
· две точки (..) идентифицирует родительский каталог. Например,..\ README.TXT означает, что файл README.TXT находится в родительском каталоге текущего каталога;
· точка (.), используемая как часть имени файла или каталога, считается разделителем компонентов имени. Например, в файле README.TXT точка отделяет имя файла от его расширения.
Эти основные правила должны соблюдать все файловые системы, поддерживаемые Win32. Допускаются лишь различия, вытекающие из разной интерпретации этих правил и дополнительных возможностей конкретной файловой системы.
Разрабатывая Win32-приложения, необходимо помнить, что пользователь может работать с любой комбинацией FAT, NTFS и CDFS, а также то, что в будущем появятся другие файловые системы. Любая из новых файловых систем будет следовать базовым правилам, и, приложив минимум дополнительных усилий, можно писать программы, корректно работающие независимо от файловой системы.