HANDLE CreateFile (

LPCTSTR FileName, // имя файла

DWORD Access, // тип доступа к файла

DWORD Sharing, // тип разделения файла

LPSECURITY_ATTRIBUTES Attrib, // указатель на описатель защиты

DWORD CreationDistr,

// что делать, когда файл существует

DWORD Flags, // флаги и атрибуты файла

HANDLE Template);

// дескриптор файла, чьи атрибуты могут быть скопированы

Для получения информации о конкретном файле используется функция

BOOL GetFileInformationByHandle (

HANDLE File, // дескриптор файла

LPBY_HANDLE_FILE_INFORMATION);

// описатель структуры с информацией о файле

За чтение из файла и запись в файл отвечают следующие две функции.

BOOL ReadFile (

HANDLE File, // дескриптор файла

LPVOID Buf, // адрес буфера, в котором хранятся данные из файла

DWORD BytesToRead, // сколько байтов прочитать

LPDWORD BytesRead, // сколько байтов прочитано

LPOVERLAPPED Overlap); // перекрываемый ввод-вывод

BOOL WriteFile (

HANDLE File, // дескриптор файла

LPVOID Buf,

// адрес буфера, в котором хранятся данные для записи

DWORD BytesToWrite, // сколько байтов записать

LPDWORD BytesWriten, // сколько байтов прочитано

LPOVERLAPPED Overlap); // перекрываемый ввод-вывод

Следующий фрагмент кода демонстрирует копирование файла File.txt в файл Output.txt.

HANDLE In, Out;

In = CreateFile (“File. txt”, GENERIC_READ, 0, NULL,

OPEN_EXISTING, 0, NULL);

Out = CreateFile (“Output. txt”, GENERIC_WRITE, 0, NULL,

CREATE_ALLWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

BOOL Finished;

do {

Finished = ReadFile (In, Buffer, BufferSize, &NumOfRead,

НЕ нашли? Не то? Что вы ищете?

NULL);

if (Finished && NumOfRead > 0)

WriteFile (Out, Buffer, NumOfRead, &NumOfWriten, NULL);

} while (Finished > 0 && NumOfRead > 0);

CloseHandle (In);

CloseHandle (Out);

Аналогичные действия обеспечиваются функцией

BOOL CopyFile(

LPCTSTR ExistingFileName, // Имя файла-источника

LPCTSTR NewFileName, // Имя файла-получателя

BOOL bFailIfExists); // Действия, если файл уже существует

Пример использования.

CopyFile(“c:\\oldfile. exe”, “c:\\newfile. exe”, FALSE);

Аналогично выглядит переименование файла, а также его удаление.

BOOL MoveFile(

LPCTSTR ExistingFileName, // Имя файла-источника

LPCTSTR NewFileName); // Имя файла-получателя

BOOL DeleteFile(

LPCTSTR ExistingFileName); // Имя файла-источника

Пример использования.

MoveFile(“c:\\tmp\\oldfile. txt”, “c:\\newfile. txt”);

DeleteFile (“c:\\tmp\\oldfile. txt”);

Для выполнения еще одной полезной файловой операции, а именно перемещения внутри файла принято использовать функцию

DWORD SetFilePointer(

HANDLE File, // Дескриптор открытого файла

LONG BytesToMove, // Количество байтов, на которые надо перейти

PLONG DistanceToMoveHigh,

// Количество байтов, на которое произошел переход

DWORD dwMoveMethod); //С какой позиции двигаться

Пример использования этой функции.

SetFilePointer (File, BytesToRead, 0,FILE_BEGIN);

Новый каталог создается, а пустой уничтожается функциями

BOOL CreateDirectory (

LPCTSTR PathName, // имя каталога

LPSECURITY_ATTRIBUTES lpSecurityAttributes);

// атрибуты безопасности

BOOL RemoveDirectory (

LPCTSTR lpPathName); // имя каталога

Пример использования одной из них.

if (RemoveDirectory("c:\\new")) printf ("каталог удален\n");

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

DWORD GetCurrentDirectory (

DWORD BufferLength, // размер буфера с именем каталога

LPTSTR Buffer); // указатель на буфер с именем каталога

BOOL SetCurrentDirectory (

LPCTSTR PathName); // имя каталога

GetCurrentDirectory (sizeof (buffer), buffer);

printf (“%s\n”, buffer);

SetCurrentDirectory ("D:\\");

GetCurrentDirectory (sizeof (buffer), buffer);

printf (“%s\n”, buffer);

Для поиска файлов используются две функции. Первая функция начинает поиск:

HANDLE FindFirstFile (

LPCTSTR FileName, // какой файл ищется, можно указывать маску

LPWIN32_FIND_DATA FindData);

// указатель на структуру с информацией

Для продолжения поиска используется функция:

BOOL FindNextFile (

HANDLE FindFile, // что искать

LPWIN32_FIND_DATA FindData); // структура с информацией

Пример их использования

WIN32_FIND_DATA FindData;

HANDLE MyFile;

MyFile = FindFirstFile ("d:\\*.*", &FindData);

if (MyFile!= INVALID_HANDLE_VALUE) {

do {

printf (“%s\n”, FindData. cFileName;

} while (FindNextFile (MyFile, &FindData));

FindClose (MyFile);

}

Функция FindClose завершает поиск файла. Она описана так.

BOOL FindClose (

HANDLE FindFile); // какой поиск закончить

Варианты заданий к лабораторной работе №7

Вариант №1

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

Вариант №2

Разработать программу, которая позволяет переименовывать файлы следующим образом. Все буквы русского алфавита из имени файла заменяются на буквы английского алфавита и наоборот. Имя файла указывается пользователем. Заменяются только короткие имена.

Вариант №3

Разработать программу, которая позволяет инвертировать содержимое и имя файла, указанного пользователем. Под инвертированием понимается запись строки в обратном порядке. Инвертируются только короткие имена файлов.

Вариант №4

Разработать программу, которая позволяет двум каталогам, указанным пользователем, обменяться содержимым, то есть подкаталогами и файлами.

Вариант №5

Разработать программу, которая позволяет переименовывать файлы следующим образом. Все строчные символы в имени файла заменяются на прописные и наоборот. Имя файла указывается пользователем. Заменяются только короткие имена.

Вариант №6

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

Вариант №7

Разработать программу, которая позволяет удалять каталоги, содержащие файлы. Имя каталога указывается пользователем.

Вариант №8

Разработать программу, которая удаляет из каталога, указанного пользователем, все пустые файлы.

Вариант №9

Разработать программу, которая перемещает все файлы в указанный пользователем каталог все файлы из его подкаталогов.

Вариант №10

Некоторые файловые системы могут поддерживать версии файлов.
Однако, в ОС семейства Windows этого не предусмотрено. Необходимо разработать программу, которая позволяла бы добавлять номер версии к короткому имени файла через символ подчеркивания. Например, при появлении очередной версии для файла f_1.txt должен быть создан файл f_2.txt.
Содержимое файлов может просто копироваться.

Учесть ограничения на длину имени файла и диапазон значений для чисел.

Вариант №11

Некоторые файловые системы могут поддерживать версии файлов.
Однако, в ОС семейства Windows этого не предусмотрено. Необходимо разработать программу, которая позволяла бы добавлять номер версии к короткому имени файла через символ подчеркивания. Например, при появлении 29.02.04г. очередной версии для файла f_22062003.txt может быть создан файл f_29022004.txt. Содержимое файлов может просто копироваться.

Учесть ограничения на длину имени файла и диапазон дат.

Вариант №12

Некоторые файловые системы могут поддерживать версии файлов.
Однако, в ОС семейства Windows этого не предусмотрено. Необходимо разработать программу, которая позволяла бы добавлять номер версии к короткому имени файла через символ подчеркивания. Например, при появлении в 10ч.25мин.32сек. очередной версии для файла f_020304.txt может быть создан файл f_102532.txt. Содержимое файлов может просто копироваться.

Учесть ограничения на длину имени файла и формат времени.

Вариант №13

Разработать программу, которая позволяет перемещать содержимое файлов, указанных пользователем, в один файл, имя которого также указывается пользователем.

Учесть ограничения на длину имени файла и набор разрешенных символов.

Вариант №14

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

Учесть ограничения на длину имени файла и набор разрешенных символов.

Вариант №15

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

Вариант №16

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

Вариант №17

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

Вариант №18

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

Вариант №19

Разработать программу, которая выводит список файлов из указанного пользователем каталога. Данный список должен быть отсортирован по имени (без расширения) каждого его элемента – файла.

Вариант №20

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

Вариант №21

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

Вариант №22

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26