{
MessageBox(NULL, "Ошибка создания файла File_1.txt", "Ошибка!", MB_OK);
return 0;
}
else
// Закрываем файл для предупреждения ошибки доступа к файлу
CloseHandle(hFile);
// Попытаемся скопировать файл, но такой файл уже существует,
// поэтому получаем сообщение об ошибке
if (!CopyFile("c:\\мои документы\\Demo_Dir_1\\File_1.txt",
"c:\\мои документы\\Demo_Dir_1\\File_1.txt", TRUE))
MessageBox(NULL, "Ошибка копирования файла", "Ошибка!", MB_OK);
// Переименование файла с помощью перемещения
if (!MoveFile("c:\\мои документы\\Demo_Dir_1\\File_1.txt",
"c:\\мои документы\\Demo_Dir_1\\File_2.txt"))
{
MessageBox(NULL, "Ошибка переименования файла", "Ошибка!", MB_OK);
return 0;
}
// Вторая попытка копирования файла, файла с таким именем уже нет
if (!CopyFile("c:\\мои документы\\Demo_Dir_1\\File_2.txt",
"c:\\мои документы\\Demo_Dir_2\\File_2.txt", TRUE))
{
MessageBox(NULL, "Ошибка копирования файла File_2.txt", "Ошибка!", MB_OK);
return 0;
}
else
MessageBox(NULL, "Файл скопирован успешно!", "Информация", MB_OK);
// пытаемся удалить каталог, в котором есть файлы,
// поэтому получаем сообщение об ошибке
if (!RemoveDirectory("c:\\мои документы\\Demo_Dir_1"))
MessageBox(NULL, "Ошибка удаления директории", "Ошибка!", MB_OK);
// Удаляем файлы из второй директории
DeleteFile("c:\\мои документы\\Demo_Dir_2\\File_1.txt");
DeleteFile("c:\\мои документы\\Demo_Dir_2\\File_2.txt");
// Удаляем файл из первой директории
DeleteFile("c:\\мои документы\\Demo_Dir_1\\File_2.txt");
// Удаляем первую директорию
RemoveDirectory("c:\\мои документы\\Demo_Dir_1");
// Пытаемся удалить текущую директорию
if (!RemoveDirectory("c:\\мои документы\\Demo_Dir_2"))
MessageBox(NULL, "Ошибка удаления директории\n , \
возможно, что она текущая", "Ошибка!", MB_OK);
// Восстанавливаем исходную текущую директорию
SetCurrentDirectory(cBufferForCurrentDirectory);
// Удаляем вторую директорию
RemoveDirectory("c:\\мои документы\\Demo_Dir_2");
return 1;
}
Приложение 2.
//Программа, демонстрирующая основные файловые функции API Win32:
//Создание каталога, создание файла, запись в файл,
//чтение из файла, уничтожение файла и каталога
//Тип приложения - Win32 GUI
#include <windows.h>
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevinstance,
LPSTR lpszCmdParam, int nCmdShow)
{
char cBuffer[0x400];
char cDirectoryBuffer[0x400];
char cTextBuffer[]=" Выхожу один я на дорогу, \
\n Сквозь туман кремнистый путь блестит.\
\n Ночь тиха, пустыня внемлет богу,\
\n И звезда с звездою говорит..";
HANDLE hFile;
DWORD dwBytes;
int i;
//Определение текущего каталога и запоминание его имени в
//массиве cDirectoryBuffer
GetCurrentDirectory(0x400, cDirectoryBuffer);
// Создание каталога
CreateDirectory("c:\\Demo_Cat", NULL);
// Установка созданного каталога текущим
SetCurrentDirectory("c:\\Demo_Cat");
// Создание файла в каталоге
if(INVALID_HANDLE_VALUE == (hFile=CreateFile("TestFile.tst",
GENERIC_WRITE, FILE_SHARE_READ,
NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL,NULL)))
{
MessageBox(NULL, "Ошибка создания файла","Ошибка!",MB_OK);
return 0;
}
// Запись данных в файл
WriteFile(hFile,cTextBuffer, sizeof(cTextBuffer),&dwBytes,NULL);
// Закрытие файла
CloseHandle(hFile);
// Очистка буфера
for(i = 0; i< sizeof(cTextBuffer); *(cTextBuffer+i) = 0, i++);
// Отбражение состояния буфера
MessageBox(NULL, cTextBuffer, "Буфер чист!", MB_OK);
// Открываем файл для чтения
if(INVALID_HANDLE_VALUE == (hFile=CreateFile("TestFile.tst",
GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL)))
{
MessageBox(NULL, "Ошибка открытия файла", "Ошибка", MB_OK);
return 0;
}
// Чтение из файла в буфер
ReadFile(hFile,cTextBuffer, sizeof(cTextBuffer),&dwBytes,NULL);
// Отображение содержимого буфера
MessageBox(NULL, cTextBuffer, "Буфер заполнен", MB_OK);
// Закрытие файла
CloseHandle(hFile);
// Удаление файла
DeleteFile("TestFile.tst");
// Восстановление прежнего текущего каталога
SetCurrentDirectory(cDirectoryBuffer);
// Удаление созданного каталога
RemoveDirectory("c:\Demo_Cat");
// Завершение работы программы
MessageBox(NULL, "Закончить работу программы ?", "Информация", MB_OK);
return 1;
}
Приложение 3.
// Программа демонстрирует вызов функции CreateFile() для открытия файла
// Тип приложения - Win32, Console
// функция GetStdHandle() возвращает дескриптор стандартного вывода
// Далее функцией ReadFile() происходит чтение файла блоками
// по 4 Кбайт и передача в стандартный поток вывода (экран)
// При запуске приложения в строке запуска
// кроме имени исполняемого файла передается параметр
// -имя файла для чтения программой
#include <windows.h>
// функция открытия файла для чтения и передачи
//в поток стандартного вывода (экран) по 4096 байт
void DoOpenRead(char *fname)
{
HANDLE f=CreateFile(fname, GENERIC_READ,0,NULL, OPEN_EXISTING,0,NULL);
HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);
if (f==INVALID_HANDLE_VALUE)
{
MessageBox(NULL,"Ошибка открытия файла!",NULL,MB_OK|MB_ICONSTOP);
exit(1);
}
char buf[4096];
unsigned long n;
do
{
unsigned long wct;
if (!ReadFile(f,buf, sizeof(buf), &n, NULL)) break;
if (n) WriteFile(out,buf, n , &wct, NULL);
}
while (n == sizeof(buf));
CloseHandle(f);
}
//функция main(), обратите внимание на аргументы main()
void main(int argc, char *argv[])
{
if (argc==1) {
MessageBox(NULL,"Командная строка должна иметь вид: readout_1 FILENAME ",
NULL,MB_OK|MB_ICONSTOP);
exit(-1);
}
while (--argc) DoOpenRead(*++argv);// Открытие и чтение файла
MessageBox(NULL,"Закончить программу? ", "Информация",MB_OK|MB_ICONSTOP);
exit(0);
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.