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

Базовые операции с папками и файлами - C++

Восстановить пароль Регистрация
 
naste94
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 31
21.05.2014, 19:25     Базовые операции с папками и файлами #1
Определить текущий каталог. Выведите имя текущего каталога и родительского. Создайте свой каталог. скопируйте в него файл из родительского каталога, удовлетворяющий заданной маске. Выведете сведения о самом маленьком из скопированных файлов (имя, размер, временные параметры). Выведете его содержимое на консоль, использую CreateFile/ Кое что написала, а дальше никак не могу, может ли кто-нибудь мне помочь. Заранее спасибо

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
//---------------------------------------------------------------------------
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
#include<iostream.h>
#include<string.h>
#include<windows.h>
#include <iomanip.h>
int main(int argc, char* argv[])
 
{
char c,str[80],str1[80],str2[80],str3[80],buf[8000],text[8000];
WIN32_FIND_DATA s;
DWORD in,out,size=8000;
int j=0,i=0,n=0,v=0,k=0,m=0;
HWND hwnd,hwnd1,*massiv1=new HWND[10];
int*massiv = new int[10];
char **del=new char* [10];
SYSTEMTIME time;
WIN32_FIND_DATA F;
 
GetCurrentDirectory(sizeof(str),str);
cout<<str;
cout<<"\n";
   
cout<<"sozdanie kataloga v:\n";
gets(str);
CreateDirectory(str,NULL);
 
cout<<"poisk failov v:\n";
gets(str1);
SetCurrentDirectory(str1);
cout<<"poisk po maske:\n";
gets(str2);
  
cout<<"kopirovanie naidennix failov v sozdanniy katalog:\n";
cout<<setw(25)<<"imena"<<setw(25)<<"razmeri\n";
 
hwnd=FindFirstFile(str2,&s);
strcat(str1,"\\");
strcat(str1,s.cFileName);
strcat(str,"\\");
strcat(str,s.cFileName);
CopyFile(str1,str,FALSE);
 
massiv1[j]=CreateFile(str,GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
j++;
cout<<setw(25)<<s.cFileName<<setw(25)<<s.nFileSizeLow;
 
str1[strlen(str1)-strlen(s.cFileName)-1]='\0';
str[strlen(str)-strlen(s.cFileName)-1]='\0';
cout<<"\n";
 
while(FindNextFile(hwnd,&s))
{
strcat(str1,"\\");
strcat(str1,s.cFileName);
strcat(str,"\\");
strcat(str,s.cFileName);
CopyFile(str1,str,FALSE);
 
massiv[j]=s.nFileSizeLow;
massiv1[j]=CreateFile(str,GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
j++;
cout<<setw(25)<<s.cFileName<<setw(25)<<s.nFileSizeLow;
cout<<"\n";}
 
for(i=0;i<j;i++)
{if (massiv[i]>massiv[n])n=i;}
cout<<"chto vi hotite sdelat s samim malenkim failom?\n";
cout<<"1.vivesti ego sodergimoe na ekran\n";
cin>>v;
 
if(v==1)
{cout<<"soderzhimoe samogo malenkogo faila:\n";
text[0]='\0';
hwnd1=CreateFile(TEXT("CONOUT$"),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,NULL);
 
while(ReadFile(massiv1[n],buf,size,&in,NULL)&(in>0))
{WriteConsole(hwnd1,buf,in,&out,NULL);
strcat(text,buf);
text[out]='\0';
}
 
        system("pause");
        return 0;
}    }
Добавлено через 6 часов 0 минут
Переделала программу, но почему-то время выводит с 1601 года, что не так?
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
//---------------------------------------------------------------------------
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
#include<iostream.h>
#include<windows.h>
#include <iomanip.h>
int main(int argc, char* argv[])
{
char c,str[80],str1[80],str2[80],str3[80],buf[8000],text[8000],str0[80];
WIN32_FIND_DATA s,F;
DWORD in,out,size=8000,size0=80;
int j=0,i=0,n=0,v=0;
HWND hwnd,hwnd1,*massiv1=new HWND[10];
int*massiv = new int[10];
char **del=new char* [10];
SYSTEMTIME time;
 
cout<<"tekushii katalog:\n";
GetCurrentDirectory(size0,str0);
cout<<str0<<"\n";
cout<<"\n";
 
cout<<"roditelskii katalog:\n";
for (int l=0;l<80;l++)
{if(str0[l]=='\\')
{str0[l+1]='\0';cout<<str0<<"\n";l=80;}}
cout<<"\n";
cout<<"sozdanie kataloga v:\n";
gets(str);
CreateDirectory(str,NULL);
cout<<"\n";
 
cout<<"poisk failov v:\n";
gets(str1);
SetCurrentDirectory(str1);
cout<<"poisk po maske:\n";
gets(str2);
cout<<"\n";
 
cout<<"kopirovanie naidennix failov v sozdanniy katalog:\n";
cout<<setw(7)<<"imena"<<setw(15)<<"razmeri"<<setw(15)<<"time\n";
hwnd=FindFirstFile(str2,&s);
strcat(str1,"\\");
strcat(str1,s.cFileName);
strcat(str,"\\");
strcat(str,s.cFileName);
CopyFile(str1,str,FALSE);
 
FileTimeToLocalFileTime(&F.ftCreationTime,&F.ftCreationTime);
FileTimeToSystemTime(&F.ftCreationTime,&time);
 
massiv[j]=s.nFileSizeLow;
massiv1[j]=CreateFile(str,GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
j++;
cout<<setw(7)<<s.cFileName<<setw(15)<<s.nFileSizeLow<<setw(9)<<"     "<<time.wHour<<":"<<time.wMinute<<"       "<<time.wDay<<"."<<time.wMonth<<"."<<time.wYear;
 
str1[strlen(str1)-strlen(s.cFileName)-1]='\0';
str[strlen(str)-strlen(s.cFileName)-1]='\0';
cout<<"\n";
 
while(FindNextFile(hwnd,&s))
{
strcat(str1,"\\");
strcat(str1,s.cFileName);
strcat(str,"\\");
strcat(str,s.cFileName);
CopyFile(str1,str,FALSE);
 
FileTimeToLocalFileTime(&F.ftCreationTime,&F.ftCreationTime);
FileTimeToSystemTime(&F.ftCreationTime,&time);
 
massiv[j]=s.nFileSizeLow;
massiv1[j]=CreateFile(str,GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
j++;
cout<<setw(7)<<s.cFileName<<setw(15)<<s.nFileSizeLow<<setw(9)<<"     "<<time.wHour<<":"<<time.wMinute<<"       "<<time.wDay<<"."<<time.wMonth<<"."<<time.wYear;
 
 
str1[strlen(str1)-strlen(s.cFileName)-1]='\0';
str[strlen(str)-strlen(s.cFileName)-1]='\0';
cout<<"\n";}
 
for(i=0;i<j;i++)
{if (massiv[i]<massiv[n])n=i;}
cout<<"vivesti sodergimoe korotkogo faila na ekran\n";
cout<<"1.da\n";
cout<<"2.net\n";
cin>>v;
 
if(v==1)
{cout<<"soderzhimoe samogo dlinnogo faila:\n";
text[0]='\0';
hwnd1=CreateFile(TEXT("CONOUT$"),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,NULL);
 
while(ReadFile(massiv1[n],buf,size,&in,NULL)&(in>0))
{WriteConsole(hwnd1,buf,in,&out,NULL);
strcat(text,buf);
text[out]='\0';
} }
 
if(v==2)
{cout<<"\n Nichego ne vivodim\n";}
 
system ("pause");
return 0;
}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2014, 19:25     Базовые операции с папками и файлами
Посмотрите здесь:

операции с текстовыми файлами C++
Операции с файлами и строками. C++
операции над файлами C++
Операции с файлами, запись массива в файл в обратном порядке C++
Базовые знания C++
Основные операции с текстовыми файлами. Выручайте! C++
ООП: Объект: множество символов алфавита. Реализовать базовые операции над множествами C++
Базовые операции над углами C++

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

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

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