Будь умным!


У вас вопросы?
У нас ответы:) SamZan.ru

на тему Работа с атрибутами файлов Вариант 11 Преподаватель

Работа добавлена на сайт samzan.ru: 2015-07-05

Бесплатно
Узнать стоимость работы
Рассчитаем за 1 минуту, онлайн

Федеральное государственное автономное

образовательное учреждение

высшего профессионального образования

____________Информационных технологий________

институт

________________________   _АСОИУ_____________________________

кафедра

   

КУРСОВАЯ РАБОТА

по предмету

ОПЕРАЦИОННЫЕ СИСТЕМЫ

на тему «Работа с атрибутами файлов»

Вариант № 11

Преподаватель                         __________               

                                                             подпись, дата                           инициалы, фамилия

        Студент                                 __________   

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

2012


Содержание

[1]
1 Теоретический материал

[1.1] 1.1 Универсальная функция CreateFile()

[1.2] 1.2 Функция закрытия файла CloseHandle()

[1.3] 1.3 Функция определения размера объекта GetFileSize()

[1.4] 1.4 Функция определения атрибутов объекта GetFileAttributes()

[1.5]
1.5 Функция установки атрибутов объекта SetFileAttributes()

[1.6] 1.6 Функция получения времени объекта GetFileTime()

[2]
2 Исходные данные

[3]
3 Практическая часть

[3.1] 3.1 Алгоритмы, описывающие работу программы

[3.2]
3.2 Тексты исходных модулей и заголовочных файлов

[4]
4 Контрольный пример

[5]
Список использованной литературы


1 Теоретический материал

1.1 Универсальная функция CreateFile() 

Функция создания нового файла, открытия существующего файла или каталога CreateFile:

HANDLE CreateFile(  

LPCTSTR lpFileName,  

DWORD dwDesiredAccess,  

DWORD dwShareMode,  

LPSECURITY_ATTRIBUTES lpSecurityAttributes,  

DWORD dwCreationDistribution,  

DWORD dwFlagsAndAttributes,  

HANDLE hTemplateFile  

);  

Функция CreateFile создает или открывает объекты (файлы, конвейеры и  пр.)  и  возвращает  дескриптор,  который  может  использоваться  при обращении к объекту.

Параметры:

lpFileName - указатель на строку с нулевым символом в конце, которая определяет  имя  создаваемого  или  уже  существующего  объекта  (файл, конвейер, mailslot, ресурс связи, дисковое устройство, пульт, или каталог).  

dwDesiredAccess  - определяет тип доступа к открываемому объекту.

DwShareMode - набор битовых флажков, которые определяют режимы совместного  использования  открываемого  или  создаваемого  объекта.

lpSecurityAttributes - указатель на дескриптор защиты или  NULL, если этот дескриптор  не используется.

DwCreationDistribution  -  определяет  действия  функции,  если приложение пытается создать объект, который уже существует.

DwFlagsAndAttributes  - определяет атрибуты и флаги для объекта.

HTemplateFile  -  определяет  дескриптор  к  файлу  шаблона.  Файл шаблона  обеспечивает  атрибуты  файла  и  расширенные  атрибуты  для создаваемого файла.

Возвращаемые значения:

1.  Если  функция  заканчивается  успешно,  возвращаемое  значение  - идентификатор созданного или открытого объекта.  

2.  Если  функция  заканчивается  аварийно,  возвращаемое  значение INVALID_HANDLE_VALUE.  Чтобы  получить  расширенную информацию  об  ошибке,  необходимо  вызвать  функцию GetLastError.

1.2 Функция закрытия файла CloseHandle()

BOOL CloseHandle(

HANDLE hObject  

);

Параметр:

HObject – идентификатор закрываемого объекта.

Возвращаемые значения:

1.  При успешном завершении функция возвращает значение TRUE.

2.  Если  функция  заканчивается  аварийно,  возвращаемое  значение  = FALSE. Чтобы  получить  расширенную  информацию  об  ошибке, необходимо вызвать функцию GetLastError.

1.3 Функция определения размера объекта GetFileSize() 

DWORD GetFileSize (  

HANDLE hFile,  

LPDWORD lpFileSizeHigh  

);  

Параметры:

hFile  –  идентификатор  объекта,  размер  которого  необходимо определить;

lpFileSizeHigh – адрес старшего слова для размера объекта.  

Возвращаемые значения:

1.  При  успешном  завершении  функция  возвращает  младшее  32-разрядное  слово  64-разрядного  размера  объекта.  Старшее  слово размера объекта записывается в переменную типа  DWORD, адрес которой передается функции через параметр lpFileSizeHigh.

2.  Если  функция  заканчивается  аварийно,  возвращаемое  значение  = 0xFFFFFFFF, при этом в слово, адрес которого задается параметром lpFileSizeHigh,  записывается  значение  NULL.  Чтобы  получить расширенную  информацию  об  ошибке,  необходимо  вызвать функцию GetLastError.

1.4 Функция определения атрибутов объекта GetFileAttributes() 

DWORD GetFileAttributes (  

LPCTSTR lpFileName

);  

Параметр:

lpFileName – указатель на строку с нулевым символом в конце, которая определяет полный или частичный путь к объекту.

Возвращаемое значение:

1.  При  успешном  завершении  функция  возвращает  слово,  значение которого является логической комбинацией следующих атрибутов:

FILE_ATTRIBUTE_ARCHIVE  (объект  был  архивирован),

FILE_ATTRIBUTE_COMPRESSED  (объект динамически сжимается при  записи  и  восстанавливается  при  чтении),

FILE_ATTRIBUTE_NORMAL  (остальные  атрибуты  не установлены),  FILE_ATTRIBUTE_HIDDEN  (скрытый  объект),

FILE_ATTRIBUTE_READONLY  (объект  можно  только  читать),

FILE_ATTRIBUTE_SYSTEM  (объект  является  частью операционной системы).


1.5 Функция установки атрибутов объекта SetFileAttributes() 

BOOL SetFileAttributes (  

LPCTSTR lpFileName,

DWORD  dwFileAttributes

);  

Параметры:

lpFileName – указатель на строку с нулевым символом в конце, которая определяет полный или частичный путь к объекту;

dwFileAttributes  –  слово,  значение  которого  является  логической комбинацией атрибутов объекта.

Возвращаемые значения:

1.  При успешном завершении функция возвращает значение TRUE.

2.  Если  функция  заканчивается  аварийно,  возвращаемое  значение  = FALSE. Чтобы  получить  расширенную  информацию  об  ошибке, необходимо вызвать функцию GetLastError.

1.6 Функция получения времени объекта GetFileTime()

BOOL GetFileTime (  

HANDLE hFile,

LPFILETIME lpCreationTime,  

LPFILETIME lpLastAccessTime,  

LPFILETIME lpLastWriteTime

);  

Параметры:

hFile  – идентификатор объекта, для которого выполняется получение времени объекта;

lpCreationTime – адрес структуры типа FILETIME, содержащей дату и время создания объекта;  

lpLastAccessTime – адрес структуры типа FILETIME, содержащей дату и время момента последнего доступа к объекту;  

lpLastWriteTime – адрес структуры типа FILETIME, содержащей дату и время момента, когда последний раз выполнялась запись данных в объект.  Структура  FILETIME хранит  64-разрядное значение даты и времени в виде количества интервалов размером 100 наносекунд от 1 января 1601 года и определена следующим образом:  

typedef struct _FILETIME {

DWORD dwLowDateTime;  // младшее слово 

DWORD dwLowDateTime;  // старшее слово 

} FILETIME;

Возвращаемые значения:

1.  При успешном завершении функция возвращает значение TRUE.

2.  Если  функция  заканчивается  аварийно,  возвращаемое  значение  = FALSE. Чтобы  получить  расширенную  информацию  об  ошибке, необходимо вызвать функцию GetLastError.


2 Исходные данные

Задание на курсовую работу

1. Разработать  приложение  Win32  (API,  MFC),  с  помощью  которого можно:

-  получить  атрибуты  файла  (функция  GetFileAttributes)  и  изменить атрибуты файла (функция SetFileAttributes);

-  определить размер файла (функция GetFileSize);

- определить дату и время создания, последнего доступа и последней записи данных в файл (функция GetFileTime);

-  получить  информацию  о  файле  по  его  идентификатору  (функция GetFileInformationByHandle).

2. Все  действия  должны  производиться  по  командам  пользователя: из меню, либо расположенными в окне приложения кнопками.

3. Полученные результаты действий вывести на экран монитора.


3 Практическая часть

3.1 Алгоритмы, описывающие работу программы

Все необходимые возможности программы реализованы в двух функциях:  OnChangeattr() и OnOpenfile(). Алгоритмы работы данных функций представлены на рисунках 1 и 2. С помощью первой функции происходит изменение атрибутов выбранного файла, с помощью второй – получение и вывод на форму всей необходимой информации о файле.

Рисунок 1. Блочная схема алгоритма функции OnChangeattr()


Рисунок 2. Блочная схема алгоритма функции OnOpenfile()


3.2 Тексты исходных модулей и заголовочных файлов

Основная логика программы находится в файле FileAttribDlg.cpp. Ниже приведен листинг функции OnOpenfile() и OnChangeattr().

//Функция, срабатывающая при выборе файла

void CFileAttribDlg::OnOpenfile()

{

static char BASED_CODE szFilter[] = "|All Files (*.*)|*.*||";

 //Открываем диалоговое окно для выбора файла

 CFileDialog of( TRUE/*диалог открытия файла*/,

    NULL/*директория по умолчанию*/,

    NULL/*файл по умолчанию*/,

    OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,

    szFilter,

    NULL );

if (of.DoModal() == IDOK){ //Если файл был выбран

 //Делаем активными флажки для выбора атрибутов файла

 GetDlgItem(IDC_CHECK1)->EnableWindow();

 GetDlgItem(IDC_CHECK2)->EnableWindow();

 GetDlgItem(IDC_CHECK3)->EnableWindow();

 GetDlgItem(IDC_CHECK4)->EnableWindow();

 GetDlgItem(IDC_CHECK5)->EnableWindow();

 GetDlgItem(IDC_CHECK6)->EnableWindow();

 GetDlgItem(IDC_CHANGEATTR)->EnableWindow();

 //Сбрасываем флажки для выбора атрибутов файла

 m_check1 = FALSE;

 m_check2 = FALSE;

 m_check3 = FALSE;

 m_check4 = FALSE;

 m_check5 = FALSE;

 m_check6 = FALSE;

 m_editfile = of.GetPathName(); //Получаем имя выбранного файла

 UpdateData(FALSE);

 //Открываем выбранный файл

 HANDLE hFile;

 hFile = CreateFile(m_editfile, NULL, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

 //Получаем атрибуты файла с помощью функции GetFileAttributes()

 DWORD dwAttr = GetFileAttributes(m_editfile);  

 if(dwAttr == 0xffffffff)  

 {  

  DWORD dwError = GetLastError();  

  if(dwError == ERROR_FILE_NOT_FOUND)  

  {  

   MessageBox("Ошибка");  

  }  

 }     

 else  

 {  

 //Если ошибки нет, то выводим результат работы функции на форму

  m_attriblist.ResetContent();

  m_attriblist.AddString("Результат работы функции GetFileAttributes()");

  m_attriblist.AddString("  - Атрибуты файла:");

  if (dwAttr&FILE_ATTRIBUTE_ARCHIVE)  { m_check1 = TRUE; m_attriblist.AddString("    * Объект был архивирован"); }

  if (dwAttr&FILE_ATTRIBUTE_COMPRESSED) { m_check2 = TRUE; m_attriblist.AddString("    * Объект динамически сжимается при записи и восстанавливается при чтении"); }

  if (dwAttr&FILE_ATTRIBUTE_HIDDEN)   { m_check3 = TRUE; m_attriblist.AddString("    * Скрытый объект"); }

  if (dwAttr&FILE_ATTRIBUTE_NORMAL)  { m_check4 = TRUE; m_attriblist.AddString("    * Атрибуты не установлены"); }

  if (dwAttr&FILE_ATTRIBUTE_READONLY)  { m_check5 = TRUE; m_attriblist.AddString("    * Объект можно только читать"); }

  if (dwAttr&FILE_ATTRIBUTE_SYSTEM)  { m_check6 = TRUE; m_attriblist.AddString("    * Объект является частью операционной системы"); }

  UpdateData(FALSE);

 }

////////////////////////////////////////////////////////////////

 //Находим размер файла с помощью функции GetFileSize()

 DWORD dwSizeLow, dwSizeHigh;

 dwSizeLow = GetFileSize(hFile, &dwSizeHigh);

 DWORD dwError;

 if (dwSizeLow == INVALID_FILE_SIZE

  &&

  (dwError = GetLastError()) != NO_ERROR )

 {

  MessageBox("Ошибка");

 }

 else

 {

 //Если ошибки нет, то выводим результат работы функции на форму

  __int64 dwSize; //"Собираем" размер файла из двух слов (это необходимо для больших файлов)

  dwSize=dwSizeHigh;

  dwSize<<=32;

  dwSize+=dwSizeLow;

  CString buf;

  buf.Format("  - Размер файла %I64d байт", dwSize);

  m_attriblist.AddString("");

  m_attriblist.AddString("Результат работы функции GetFileSize()");

  m_attriblist.AddString("");

  m_attriblist.AddString(buf);

 }

////////////////////////////////////////////////////////////////

 //Находим дату и время файла с помощью функции GetFileTime()

 FILETIME lpCreationTime, lpLastAccessTime, lpLastWriteTime;

 if (GetFileTime(hFile, &lpCreationTime, &lpLastAccessTime, &lpLastWriteTime))

 {

 //Если ошибки нет, то выводим результат работы функции на форму

  CTime CreationTime(lpCreationTime); //Передаем полученное время в объекты класса CTime, чтобы удобно было выводить

  CTime LastAccessTime(lpLastAccessTime);

  CTime LastWriteTime(lpLastWriteTime);

  m_attriblist.AddString("");

  m_attriblist.AddString("Результат работы функции GetFileTime()");

  m_attriblist.AddString("");

  m_attriblist.AddString(CreationTime.Format("  - Дата и время создания файла: %d.%m.%Y, %H:%M:%S"));

  m_attriblist.AddString(LastAccessTime.Format("  - Дата и время момента последнего доступа к файлу: %d.%m.%Y, %H:%M:%S"));  

  m_attriblist.AddString(LastWriteTime.Format("  - Дата и время момента последней записи в файл: %d.%m.%Y, %H:%M:%S"));

 }

 else

 {

  MessageBox("Ошибка");

 }

/////////////////////////////////////////////////////////////////

 //Выводим информацию о файле с помощью функции GetFileInformationByHandle()

 m_attriblist.AddString("");

 m_attriblist.AddString("Результат работы функции GetFileInformationByHandle()");

 m_attriblist.AddString("");

 BY_HANDLE_FILE_INFORMATION FileInformation;

 if (GetFileInformationByHandle(hFile, &FileInformation))

 {

 //Если ошибки нет, то выводим результат работы функции на форму

 //Выводим атрибуты файла

 m_attriblist.AddString("  - Атрибуты файла:");

 if (FileInformation.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE) { m_attriblist.AddString("    * Объект был архивирован"); }

 if (FileInformation.dwFileAttributes&FILE_ATTRIBUTE_COMPRESSED) { m_attriblist.AddString("    * Объект динамически сжимается при записи и восстанавливается при чтении"); }

 if (FileInformation.dwFileAttributes&FILE_ATTRIBUTE_HIDDEN)  { m_attriblist.AddString("    * Скрытый объект"); }

 if (FileInformation.dwFileAttributes&FILE_ATTRIBUTE_NORMAL)  { m_attriblist.AddString("    * Атрибуты не установлены"); }

 if (FileInformation.dwFileAttributes&FILE_ATTRIBUTE_READONLY) { m_attriblist.AddString("    * Объект можно только читать"); }

 if (FileInformation.dwFileAttributes&FILE_ATTRIBUTE_SYSTEM)  { m_attriblist.AddString("    * Объект является частью операционной системы"); }   

  //Выводим размер файла

  __int64 dwSize; //"Собираем" размер файла из двух слов (это необходимо для больших файлов)

  dwSize=FileInformation.nFileSizeHigh;

  dwSize<<=32;

  dwSize+=FileInformation.nFileSizeLow;

  CString buf;

  buf.Format("  - Размер файла: %I64d байт", dwSize);

  m_attriblist.AddString("");

  m_attriblist.AddString(buf);

  //Выводим время и дату на форму

  CTime CreTime(FileInformation.ftCreationTime); //Передаем полученное время в объекты класса CTime, чтобы удобно было выводить

  CTime LATime(FileInformation.ftLastAccessTime);

  CTime LWTime(FileInformation.ftLastWriteTime );

  m_attriblist.AddString("");

  m_attriblist.AddString(CreTime.Format("  - Дата и время создания файла: %d.%m.%Y, %H:%M:%S"));  

  m_attriblist.AddString(LATime.Format("  - Дата и время момента последнего доступа к файлу: %d.%m.%Y, %H:%M:%S"));

  m_attriblist.AddString(LWTime.Format("  - Дата и время момента последней записи в файл: %d.%m.%Y, %H:%M:%S"));

 }

 else

 {

  MessageBox("Ошибка");

 }

 CloseHandle(hFile);

 }

}

//Функция, срабатывающая при нажатии на кнопку "Изменить атрибуты файла"

void CFileAttribDlg::OnChangeattr()

{

UpdateData(TRUE);

DWORD dwAttr = FILE_ATTRIBUTE_NORMAL;

 //Заполняем новые атрибуты файла из флажков на форме

 if(m_check1) { dwAttr |= FILE_ATTRIBUTE_ARCHIVE; }

if(m_check2) { dwAttr |= FILE_ATTRIBUTE_COMPRESSED; }

if(m_check3) { dwAttr |= FILE_ATTRIBUTE_HIDDEN;  }

if(m_check4) { dwAttr |= FILE_ATTRIBUTE_NORMAL;  }

if(m_check5) { dwAttr |= FILE_ATTRIBUTE_READONLY; }

if(m_check6) { dwAttr |= FILE_ATTRIBUTE_SYSTEM;  }

//Изменяем атрибуты файла

if (SetFileAttributes(m_editfile, dwAttr))

{

 MessageBox("Атрибуты файла изменены");

}

else

{

 MessageBox("Атрибуты файла не были изменены");

 }

}


4 Контрольный пример

Для контрольного примера был использован файл «Новосибирск.rar», размер которого превышает 11 Гб. Результат работы программы представлен на рисунке 3.

Рисунок 3. Основная форма программы


Список использованной литературы

1.  Баженова,  И.Ю.  Visual  C++  6.0  (Visual  Studio  98)  /  И.Ю. Баженова. М.: ДИАЛОГ-МИФИ, 1999. 407 с.

2.  Фролов, А. В.  Microsoft  Visual  C++ и  MFC. Программирование для  Windows  95 и  Windows  NT  / А. В. Фролов, Г. В. Фролов. М.: Диалог-МИФИ, 1997. 272 с.

3.  Ахо,  А.В.  Структуры  данных  и  алгоритмы  /  А.В.  Ахо,  Дж.Э. Хопкрофт, Дж.Д. Ульман. М: Вильямс, 2000. 286 с.

4.  Вирт, Н. Алгоритмы и структуры данных  / Н. Вирт. М.: Мир, 1989. 267 с.

5.  Кнут, Д.Э. Искусство программирования: В  3т. Т.  1 Основные алгоритмы / Д.Э. Кнут. Изд. 3-е М: Вильямс, 2000.

22


Диплом на заказ


1. МЕТОДИЧНІ РЕКОМЕНДАЦІЇ ДО НАВЧАЛЬНОГО КУРСУ СОЦІОЛОГІЯ Навчальна дисципліна Соціологіяrdquo; передба
2. опера Історія розвитку
3. Доклад- Созвездия Южный Крест, Муха, Жертвенник
4. Тема- Плазмозамещающие растворы Состав плазмы На долю сухого вещества плазмы приходится 8 10
5. Реферат- Дифференциальные уравнения I и II порядка
6. Тема- Анализ цепей постоянного тока с одним источником энергии 1
7. Учебное пособие- Мале підприємництво
8. Органическое вещество почвы его состав и экологическая функция
9. Тёмное время Relese 3.
10. Контрольная работа по предмету Основы социологии и политологии Вариант I Дайте определение понятия
11. Поволжский Государственный Университет
12. Операции инвестиционных банков и компаний
13. как подцепить партнера на ночь и сколько должно быть алкоголя в крови когда пора идти домой
14. тема химических элементов Д
15. контрольна робота З екології Учениці групи Т11 Рашевської Тетяни Білет 19
16. Українська ділова мова професійного напряму Багатозначні слова і контексти.html
17. Контроль работы сушилок и меры по устранению брака в процессе сушки Топки для сушилок
18. Недоверчивый Наиболее часто повторяющаяся эмоция- Сильная настороженность с агрессией
19. Не все вопросы освещены в равной мере что связано прежде всего со степенью разработанности тех или иных про
20. Прогнозирование критической температуры Алканы и алкены