C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




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

Поиск файлов и изменение атрибутов.

Следующий пример копирует все текстовые файлы из текущей директории в новую директорию с именем \TEXTRO. При необходимости, файлам в новой директории присваивается атрибут "только чтение".

Директория \TEXTRO создаётся функцией CreateDirectory.

Поиск всех файлов .TXT в текущей директории производится функциями FindFirstFile и FindNextFile. Каждый файл .TXT копируется в директорию \TEXTRO. После того, как файл скопирован, функция GetFileAttributes проверяет, является ли файл только для чтения. Если аттрибута "только чтение" у файла не установлено, то приложение устанавливает этот атрибут функцией SetFileAttributes.

После того, как все файлы .TXT из текущей директории были скопированы, то хэндл поиска закрывается функцией FindClose.

#include <windows.h>
#include <stdio.h>

WIN32_FIND_DATA FileData;
HANDLE hSearch;
DWORD dwAttrs;
char szDirPath[] = "c:\\TEXTRO\\";
char szNewPath[MAX_PATH];
char szHome[MAX_PATH];

BOOL fFinished = FALSE;

// Создаём новую директорию.
 
if (!CreateDirectory(szDirPath, NULL))
{
    printf("Couldn't create new directory.");
    return;
}

// Начинаем поиск файлов .TXT в текущей директории.
 
hSearch = FindFirstFile("*.txt", &FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
    printf("No .TXT files found.");
    return;
}

// Копируем каждый файл .TXT в новую директорию и изменяем его
// атрибут на "только чтение", если он уже не установлен.
 
while (!fFinished)
{
    lstrcpy(szNewPath, szDirPath);
    lstrcat(szNewPath, FileData.cFileName);
    if (CopyFile(FileData.cFileName, szNewPath, FALSE))
    {
        dwAttrs = GetFileAttributes(FileData.cFileName);
        if (!(dwAttrs & FILE_ATTRIBUTE_READONLY))
        {
            SetFileAttributes(szNewPath,
                dwAttrs | FILE_ATTRIBUTE_READONLY);
        }
    }
    else
    {
        printf("Couldn't copy file.");
        return;
    }

    if (!FindNextFile(hSearch, &FileData))
    {
        if (GetLastError() == ERROR_NO_MORE_FILES)
        {
            MessageBox(hwnd, "No more .TXT files.",
                "Search completed.", MB_OK);
            fFinished = TRUE;
        }
        else
        {
            printf("Couldn't find next file.");
            return;
        }
    }
}

// Закрываем хэндл поиска.

FindClose(hSearch);