Управление файлами

Управление файлами

Для управления файлами Windows предоставляет целый ряд функций, работа с которыми обычно не представляет сложности. Ниже описаны функции, с помощью которых можно удалять, копировать и переименовывать файлы. Существует также функция, предназначенная для создания имен временных файлов.

При удалении файла достаточно указать его имя. Вспомните, что все полные имена файлов начинаются с буквы диска или имени сервера. Открытый файл, вообще говоря, удалить невозможно (это допускается в Windows 9x и UNIX); попытка выполнения подобной операции закончится неудачей. У такого ограничения есть свои положительные стороны, поскольку оно предотвращает случайное удаление открытых файлов. 

BOOL DeleteFile(LPCTSTR lpFileName) 

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

BOOL CopyFile(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, BOOL fFailIfExists) 

Функция CopyFile копирует существующий файл с заданным именем и присваивает копии указанное новое имя. В случае существования файла с таким же именем он будет заменен новым файлом только в том случае, если значением параметра fFailIfExists является FALSE.

Под управлением NT5 можно создать жесткую ссылку (hard link) для двух файлов, аналогичную жестким ссылкам в UNIX, используя для этого функцию CreateHardLink. Жесткие ссылки делают возможным существование файла под двумя различными именами. Заметьте, что в подобных случаях файл как таковой существует в единственном числе, и поэтому можно произвольно использовать любое из его имен, независимо от того, какое из них было использовано для открытия файла.

BOOL CreateHardLink(LPCTSTR lpFileName, LPCTSTR lpExistingFileName, BOOL lpSecurityAttributes) 

Два первых аргумента имеют тот же смысл, что и в функции CopyFile, хотя и расположены в обратном порядке. Оба имени файла, новое и существующее, должны относиться к одному и тому же тому файловой системы, но могут соответствовать различным каталогам. Атрибуты защиты файла, если таковые имеются, применимы и к новому имени файла.

Если заглянуть в документацию Microsoft, то можно увидеть, что в структуре BY_HANDLE_FILE_INFO имеется поле "количество ссылок", и именно этот счетчик используется для определения того, может или не может быть удален данный файл. Функция DeleteFile удаляет имя из каталога файловой системы, но сам файл не может быть удален до тех пор, пока значение счетчика "количество ссылок" не станет равным 0.

Гибких ссылок (soft link) в Windows не существует, хотя оболочки Windows (но не сама Windows), руководствующиеся при определении местоположения файла его содержимым, поддерживают ярлыки (shortcuts). Ярлыки предоставляют средства, подобные гибким ссылкам, но воспользоваться ими могут только пользователи оболочки.

Доступны две функции, позволяющие переименовывать, или "перемещать", файл. Эти же функции применимы и к каталогам. (Функции DeleteFile и CopyFile могут применяться только к файлам.) 

BOOL MoveFile(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName)

BOOL MoveFileEx(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, DWORD dwFlags) 

Если новый файл уже существует, функция MoveFile завершается с ошибкой; в этом случае следует использовать функцию MoveFileEx. Заметьте, что суффикс "Ех" обычно применяется для обозначения усовершенствованных версий функций, обладающих расширенными (extended) функциональными возможностями.

Параметры

lpExistingFileName — указатель на строку, содержащую имя существующего файла или каталога.

lpNewFileName — указатель на строку, содержащую имя нового файла или каталога, которые, в случае функции MoveFile, до ее вызова существовать не должны. Новый файл может принадлежать другой файловой системе или находиться на другом диске, но новые каталоги обязательно должны находиться на одном и том же диске. Если значение этого параметра положить равным NULL, то существующий файл будет удален.

dwFlags — позволяет задавать следующие опции:

• MOVEFILE_REPLACE_EXISTING — разрешает замену существующего файла.

• MOVEFILE_WRITETHROUGH — используйте этот флаг, если необходимо, чтобы функция выполнила возврат лишь после того, как файл будет фактически перемещен на диске.

• MOVEFILE_COPY_ALLOWED — если новый файл находится на другом томе, перемещение осуществляется путем последовательного выполнения функций CopyFile и DeleteFile.

• MOVEFILE_DELAY_UNTIL_REBOOT — установка этого флага, использование которого является прерогативой администратора системы и который не может применяться совместно с флагом MOVEFILE_COPY_ALLOWED, приводит к тому, что фактическое перемещение файла будет осуществлено только после перезагрузки системы.

С перемещением (переименованием) файлов связаны некоторые ограничения.

• В Windows 9x функция MoveFileEx не реализована; вместо нее вы должны использовать последовательные вызовы функций CopyFile и DeleteFile. Это делает возможным одновременное существование двух экземпляров файла, что порождает определенные проблемы в случае дисков, близких к заполнению, или файлов большого размера. При этом временные атрибуты файлов изменяются иначе, нежели при истинном перемещении.

• Использование групповых символов в именах файлов или каталогов запрещено. Необходимо указывать фактические имена. 

Полные имена файлов в UNIX не включают имен дисков и серверов; корневой системный каталог обозначается обратной косой чертой. В то же время, функции для работы с файлами, входящие в библиотеку Microsoft С, поддерживают имена дисков, как того требуют соглашения Windows относительно именования файлов.

В UNIX отсутствует функция непосредственного копирования файлов. Вместо этого, чтобы выполнить команду cp, вы должны написать небольшую программу или использовать системный вызов system ().

В UNIX эквивалентом функции DeleteFile служит функция unlink, которая, к тому же, может удалять и каталоги.

В библиотеку С входят функции rename и remove, однако функция remove не позволяет присваивать файлу имя уже существующего файла или присваивать каталогу имя существующего непустого каталога. Новое имя может совпадать с именем существующего каталога только в том случае, если этот каталог пустой.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Работа с файлами

Из книги 300 лучших программ на все случаи жизни автора Леонтьев Виталий Петрович

Работа с файлами


Управление файлами занятий

Из книги Microsoft Windows SharePoint Services 3.0. Русская версия. Главы 9-16 автора Лондер Ольга

Управление файлами занятий В инструкциях, приведенных в разделе «Использование компакт- диска», предполагается, что читатель использует Windows Vista. Единственным отличием при установке, использовании и удалении файлов занятий, включенных на компакт-диск, является папка, в


Работа с файлами

Из книги Реферат, курсовая, диплом на компьютере автора Баловсяк Надежда Васильевна

Работа с файлами Набрав первые несколько абзацев, обязательно сохраните их. Для этого предназначена команда меню Файл ? Сохранить. В появившемся окне Сохранение документа необходимо указать имя и выбрать месторасположение файла. По умолчанию текстовый редактор


Управление файлами и каталогами

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Управление файлами и каталогами В этом разделе вводятся основные функции, предназначенные для управления файлами и


Работа с MP3-файлами

Из книги 500 лучших программ для Windows автора Уваров Сергей Сергеевич

Работа с MP3-файлами Конвертируя диски в формат MP3, пользователь только первое время будет слушать композиции, сохраненные с пустыми тегами. Долгий поиск необходимой композиции вскоре начнет утомлять, ручное переименование тегов надоест после первых трех


Работа с файлами

Из книги Справочник по PHP автора

Работа с файлами fopenОткрывает файл и привязывает его к дескриптору.Синтаксис:int fopen(string $filename, string $mode, bool $use_include_path=false)Открывает файл с именем $filename в режиме $mode и возвращает дескриптор открытого файла. Если операция "провалилась", то функция возвращает false. Необязательный


Работа с файлами

Из книги Программирование на языке Пролог для искусственного интеллекта автора Братко Иван

Работа с файлами ftp_getПроизводит загрузку с FTP-сервера.Синтаксис:int ftp_get(int ftp_stream, string local_file, string remote_file, int mode)Функция ftp_get() загружает файл под названием remote_file с FTP-сервера и локально сохраняет его под именем local_file. Параметр mode устанавливает режим передачи файла и может


6.1. Связь с файлами

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

6.1. Связь с файлами До сих пор мы применяли только один метод связи пользователя с программой — пользователь задает программе вопросы, а программа ему отвечает, конкретизируя переменные. Такой механизм связи прост и практичен и, несмотря на свою простоту, обеспечивает


Глава 11 Простое управление файлами

Из книги Руководство по переходу на Ubuntu 10.04 LTS «Lucid Lynx» автора Неворотин Вадим

Глава 11 Простое управление файлами Файлы — это наиболее распространенная абстракция ресурсов, используемая в мире Unix. Такие ресурсы, как память, дисковое пространство, устройства и каналы межпроцессного взаимодействия (IPC), могут быть представлены в виде файлов.


14.2 Работа с файлами

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

14.2 Работа с файлами Начну рассказ наверно с того, что в любой момент времени работы в терминале вы находитесь в некотором каталоге. При запуске терминала текущей директорией является домашний каталог пользователя, но потом вы конечно можете её поменять.Узнать, в какой же


Операции над файлами

Из книги Социальные сети без страха для тех, кому за... автора Виннер Марина

Операции над файлами Функция Краткое описание access определение прав доступа к файлу chmod изменение прав доступа к файлу filelength измерение длины файла isatty проверка, является ли устройство символьным mktemp генерация уникального имени файла remove уничтожение


Обмен файлами

Из книги iOS. Приемы программирования автора Нахавандипур Вандад


Глава 12. Управление файлами и каталогами

Из книги Компьютер – это просто! автора Алиев Валерий

Глава 12. Управление файлами и каталогами 12.0. Введение Операционная система iOS основана на MacOS X, которая, в свою очередь, построена на базе операционной системы Unix. В iOS полная структура каталогов остается невидимой для приложения, поскольку каждое приложение, написанное


Работа с файлами

Из книги Linux Mint и его Cinnamon. Очерки применителя автора Федорчук Алексей Викторович

Работа с файлами Один элемент работы с файлами мы уже рассмотрели – это создание файла. Следующий важный элемент работы с файлом – это открытие файла.Действительно, создав файл и сохранив в нем информацию, мы все это сделали для того, чтобы иметь возможность продолжить


Geany и управление файлами

Из книги автора

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