Advertisement
Usow_Maxim

Lab_11.11

Jun 8th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.47 KB | None | 0 0
  1. #include <iostream>
  2. #include <Windows.h>
  3. #include <io.h>
  4. #include <cstdio>
  5.  
  6. using namespace std;
  7.  
  8. int SaveInt()
  9. {
  10.     char str[10];
  11.     while(true)
  12.     {
  13.         scanf("%s", str);
  14.         if(atoi(str))
  15.             break;
  16.         else
  17.             printf("Введите число n > 0: ");
  18.     }
  19.     return atoi(str);
  20. }
  21.  
  22. void ShowFile(WIN32_FIND_DATAA findData, string filename)
  23. {
  24.     filename = findData.cFileName;
  25.     cout << findData.cFileName << "|";
  26.     DWORD fSize = findData.nFileSizeLow;
  27.     cout << findData.nFileSizeLow << " Bytes|";
  28.     SYSTEMTIME stSystemTime;
  29.     if (FileTimeToSystemTime(&findData.ftLastWriteTime, &stSystemTime))
  30.     {
  31.         printf("%d.%d.%d %d:%d|", stSystemTime.wDay, stSystemTime.wMonth, stSystemTime.wYear, stSystemTime.wHour, stSystemTime.wMinute);
  32.     }
  33.     if (findData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)
  34.         cout << "Скрытый" << " ";
  35.  
  36.     if (findData.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM)
  37.         cout << "Системный" << " ";
  38.  
  39.     if (findData.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE)
  40.         cout << "Архивный" << " ";
  41.  
  42.     if (findData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)
  43.         cout << "Только для чтения" << " ";
  44.  
  45.     if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
  46.         cout << "Папка" << " ";
  47.     cout << endl;
  48. }
  49.  
  50. int main()
  51. {
  52.     SetConsoleCP(1251);
  53.     SetConsoleOutputCP(1251);
  54.     cout << "Добро пожаловать в симуляцию команды \"Dir\"." << endl << "Введите путь: ";
  55.     string path = "";
  56.     getline(cin, path);
  57.     cout << "Выводить файлы с атрибутом \"Только для чтения\"?" << endl << "1. Да\n2. Нет\nВыбор: ";
  58.     int ARead = SaveInt();
  59.     WIN32_FIND_DATAA findData;
  60.     HANDLE hFile = FindFirstFileA(path.c_str(), &findData); //Получаем дескриптор файла(уникальный номер)
  61.     string filename = "";
  62.     std::size_t found;
  63.     string temp;
  64.  
  65.     if (hFile == INVALID_HANDLE_VALUE)
  66.     {
  67.         cout << "Ошибка!" << endl;
  68.     }
  69.     else
  70.     {
  71.         do
  72.         {
  73.             if(ARead == 1)
  74.             {
  75.                 if(findData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)
  76.                     ShowFile(findData, filename);
  77.             }
  78.             else
  79.             {
  80.                 ShowFile(findData, filename);
  81.             }
  82.         } while(FindNextFileA(hFile, &findData));
  83.     }
  84.     cout << endl << endl;
  85.  
  86.     system("pause");
  87.  
  88.     return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement