Форум программистов, компьютерный форум CyberForum.ru

Управление файлами и Каталогами Visual studio 2010 - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
misterbl95
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 22
31.10.2012, 14:09     Управление файлами и Каталогами Visual studio 2010 #1
Разработать программу, которая позволяет:
1. перемещать все файлы в указанный пользователем каталог все файлы из его подкаталогов.
2. подсчитать количество цифр в файле с именем, указанным пользователем.
3. переименовывать файлы следующим образом: все строчные символы в имени файла заменяются на прописные и наоборот. Имя файла указывается пользователем.
4. выводить список файлов из указанного пользователем каталога. В данном списке не должны показываться элементы, чье время модификации раньше, чем указанное пользователем значение.
5. выводить список файлов из указанного пользователем каталога. Данный список должен быть отсортирован по времени создания каждого его элемента – файла.
Учесть ограничения на длину имени файла и набор разрешенных символов.


Лекция
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
Большинство современных ОС поддерживает логическую модель данных, основанную на неких абстрактных единицах, называемых файлами, которые могут группироваться по разным признакам в так называемые каталоги. В ОС Windows имеются функций, которые могут оперировать с каталогами и файлами. Созданием файла занимается функция
HANDLE CreateFile (
   LPCTSTR FileName,  // имя файла
   DWORD Access,      // тип доступа к файла
   DWORD Sharing,     // тип разделения файла
   LPSECURITY_ATTRIBUTES Attrib, // указатель на описатель защиты
   DWORD CreationDistr, 
      // что делать, когда файл существует 
   DWORD Flags,   // флаги и атрибуты файла
   HANDLE Template);    
      // дескриптор файла, чьи атрибуты могут быть скопированы
 
Для получения информации о конкретном файле используется функция
BOOL GetFileInformationByHandle (
   HANDLE File,          // дескриптор файла
   LPBY_HANDLE_FILE_INFORMATION);   
      // описатель структуры с информацией о файле
 
За чтение из файла и запись в файл отвечают следующие две функции.
BOOL ReadFile (
   HANDLE File,           // дескриптор файла
   LPVOID Buf, // адрес буфера, в котором хранятся данные из файла
   DWORD BytesToRead,     // сколько байтов прочитать
   LPDWORD BytesRead,     // сколько байтов прочитано
   LPOVERLAPPED Overlap); // перекрываемый ввод-вывод
 
BOOL WriteFile (
   HANDLE File,            // дескриптор файла
   LPVOID Buf, 
      // адрес буфера, в котором хранятся данные для записи
   DWORD BytesToWrite,     // сколько байтов записать
   LPDWORD BytesWriten,    // сколько байтов прочитано
   LPOVERLAPPED Overlap);  // перекрываемый ввод-вывод
 
Следующий фрагмент кода демонстрирует побитовое копирование содержимого файла File.txt в файл Output.txt.
 
HANDLE In, Out;
In = CreateFile ("File.txt", GENERIC_READ, 0, NULL,
                 OPEN_EXISTING, 0, NULL);
Out = CreateFile ("Output.txt", GENERIC_WRITE, 0, NULL,
                  CREATE_ALLWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
BOOL Finished;
 
do {
   Finished = ReadFile (In, Buffer, BufferSize, &NumOfRead,
                        NULL);
   if (Finished && NumOfRead > 0)
      WriteFile (Out, Buffer, NumOfRead, &NumOfWriten, NULL);
} while (Finished > 0 && NumOfRead > 0);
 
CloseHandle (In);
CloseHandle (Out);
 
Аналогичные действия обеспечиваются функцией
BOOL CopyFile(
   LPCTSTR ExistingFileName, // Имя файла-источника
   LPCTSTR NewFileName,      // Имя файла-получателя
   BOOL bFailIfExists);    // Действия, если файл уже существует
 
Пример использования.
CopyFile("c:\\oldfile.exe", "c:\\newfile.exe", FALSE);
 
Аналогично выглядит переименование файла, а также его удаление.
BOOL MoveFile(
   LPCTSTR ExistingFileName, // Имя файла-источника
   LPCTSTR NewFileName);     // Имя файла-получателя
BOOL DeleteFile(
   LPCTSTR ExistingFileName); // Имя файла-источника
 
Пример использования.
MoveFile("c:\\tmp\\oldfile.txt", "c:\\newfile.txt");
DeleteFile ("c:\\tmp\\oldfile.txt");
 
Для выполнения перемещения внутри файла принято использовать функцию
DWORD SetFilePointer(
   HANDLE File,            // Дескриптор открытого файла
   LONG BytesToMove, // Количество байтов, на которые надо перейти
   PLONG DistanceToMoveHigh, 
      // Количество байтов, на которое произошел переход
   DWORD dwMoveMethod);        //С какой позиции двигаться
   
Пример использования этой функции.
SetFilePointer (File, BytesToRead, 0, FILE_BEGIN);
 
Новый каталог создается, а пустой уничтожается функциями
BOOL CreateDirectory (
   LPCTSTR PathName,                            // имя каталога
   LPSECURITY_ATTRIBUTES lpSecurityAttributes); 
      // атрибуты безопасности
 
BOOL RemoveDirectory (
   LPCTSTR lpPathName); // имя каталога
Пример использования одной из них.
if (RemoveDirectory("c:\\new")) printf ("каталог удален\n");
 
Следующие две функции дают возможность получить информацию о текущем каталоге и изменить текущий каталог. Ниже расположен пример их использования.
DWORD GetCurrentDirectory (
   DWORD BufferLength,  // размер буфера с именем каталога
   LPTSTR Buffer);      // указатель на буфер с именем каталога
BOOL SetCurrentDirectory (
   LPCTSTR PathName);     // имя каталога
 
GetCurrentDirectory (sizeof (buffer), buffer);
printf ("%s\n", buffer);
 
SetCurrentDirectory ("D:\\");
GetCurrentDirectory (sizeof (buffer), buffer);
printf ("%s\n", buffer);
 
Для поиска файлов используются две функции. Первая функция начинает поиск:
HANDLE FindFirstFile (
   LPCTSTR FileName, // какой файл ищется, можно указывать маску
   LPWIN32_FIND_DATA FindData); 
      // указатель на структуру с информацией
 
Для продолжения поиска используется функция:
BOOL FindNextFile (
   HANDLE FindFile,   // что искать
   LPWIN32_FIND_DATA FindData); // структура с информацией
 
Пример их использования
WIN32_FIND_DATA FindData;
HANDLE MyFile;
 
MyFile = FindFirstFile ("d:\\*.*", &FindData);
if (MyFile != INVALID_HANDLE_VALUE) {
   do {
       printf ("%s\n", FindData.cFileName;
      } while (FindNextFile (MyFile, &FindData));
   FindClose (MyFile);
}
 
Функция FindClose завершает поиск файла. Она описана так.
BOOL FindClose (
   HANDLE FindFile);  // какой поиск закончить
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2012, 14:09     Управление файлами и Каталогами Visual studio 2010
Посмотрите здесь:

C++ Visual Studio 2010
C++ Visual Studio 2010
C++ c++, visual studio 2010! 1.
c++, visual studio 2010! 2. C++
c++, visual studio 2010! 6. C++
c++, visual studio 2010! 7 C++
C++ Работа с INI-файлами в Visual Studio 2010
Visual studio 2010 C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 02:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru