Структура хранит время и дату в следующем формате:
typedef struct _SYSTEMTIME { WORD wYear; //год WORD wMonth; //месяц; январь = 1, февраль = 2, и так далее WORD wDayOfWeek; //день недели; воскресенье = 0, понедельник = 1 и т.д. WORD wDay; //число (номер дня в месяце) WORD wHour; //часы WORD wMinute; //минуты WORD wSecond; //секунды WORD wMilliseconds;//миллисекунды } SYSTEMTIME;
Пример: для файлов с расширением doc из каталога d:\mydir\ вывести все данные о времени последнего доступа к ним с точностью до секунды. FILETIME ft;HANDLE fh;SYSTEMTIME st;WIN32_FIND_DATA fd; char rbuf[256];fh = FindFirstFile("D:\\MYDIR\\*.DOC",&fd);if(fh!= INVALID_HANDLE_VALUE){ while(FindNextFile(fh,&fd)) { ft = fd.ftLastAccessTime; CharToOem(fd.cFileName,rbuf); printf(" %-40s",rbuf,rbuf14); FileTimeToSystemTime(&ft, &st); printf("%2d.%2d.%4d %2d:%2d:%2d\n", st.wDay,st.wMonth,st.wYear, st.wHour,st.wMinute,st.wSecond); } if(FindClose(fh)) printf("oK Find File\n");} Для получения информации об атрибутах файла, или их изменения, можно воспользоваться функциями
GetFileAttributes, SetFileAttributes. Функция
GetFileAttributes возвращает атрибуты указанного файла или каталога.
DWORD GetFileAttributes(LPCTSTR lpFileName // имя файла или каталога
); Параметры:
lpFileName [in]
| Указатель на нуль-завершенную строку, которая определяет имя файла или каталога.
|
В случае удачного завершения работы функции возвращаемое значение, содержащее значения атрибутов файла или каталога см. описание поля dwFileAttributes структуры WIN32_FIND_DATA. В противном случае будет возвращено значение 0xFFFFFFFF, т.е. -1.
Функция
SetFileAttributes устанавливает атрибуты файла.
BOOL SetFileAttributes(LPCTSTR lpFileName, // имя файла
DWORD dwFileAttributes // атрибуты
); Параметры:
lpFileName [in]
| Указатель на нуль-завершенную строку, которая определяет имя файла или каталога.
|
dwFileAttributes [in] | Атрибуты файла. См. описание поля dwFileAttributes структуры WIN32_FIND_DATA. |
Возвращаемые значения Внимание:
BOOL – не является встроенным типом языка С++ bool! В файле windef.h
BOOL определено, как
int. Если функция завершается успешно, возвращаемое значение - не нуль.Если функция завершается ошибкой, величина возвращаемого значения - нуль. Для получения дополнительной информации об ошибке, необходимо вызывать функцию
GetLastError. Задания к лабораторным работам: Вариант 1.Написать программу, которая для заданного каталога определяет объем файлов, входящий в данный каталог и все его подкаталоги. Вариант 2.Написать программу, которая для заданного каталога определяет объем файлов, с расширением txt, являющимися архивными. Вариант 3.Написать программу, которая для заданного каталога ищет и выводит имя подкаталога, который содержит максимальное число файлов с расширением cpp. Вариант 4.Написать программу, которая для заданного каталога задает для всех файлов с расширением cpp атрибут «только для чтения», и выводит количество файлов, для которых произошло изменение атрибута. Вариант 5.Написать программу, которая для заданного каталога задает для всех файлов с расширением cpp атрибут «системный файл, и выводит общий объем файлов, для которых произошло изменение атрибута. Вариант 6.Написать программу, которая для заданного каталога задает для всех файлов, кроме файлов с расширением txt устанавливает атрибуты «только для чтения» и «скрытый файл». Программа должна вывести количество файлов атрибуты, которых были изменены. Вариант 7.Написать программу, которая для заданного каталога ищет все вложенные в него подкаталоги и изменяет их атрибуты на «скрытый». Программа должна вывести имена всех подкаталогов. Вариант 8.Написать программу, которая для заданного каталога задает для всех файлов с расширением cpp, созданных позже указанной преподавателем даты атрибут «только для чтения», и выводит количество файлов, для которых произошло изменение атрибута. Вариант 9.Написать программу, которая для заданного каталога задает для всех файлов с расширением cpp атрибут «только для чтения», и выводит имена и даты создания, с точностью до минут, для которых произошло изменение атрибута. Вариант 10.Написать программу, которая для заданного каталога ищет подкаталог, созданный раньше всех, и выводит список файлов из этого каталога с расширениями cpp и txt. Вариант 11.Написать программу, которая для заданного каталога ищет подкаталог, созданный позже всех, и выводит список файлов из этого каталога в «классическом формате», а также даты времен создания и последней модификации с точностью до минут.