Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа №3
.cpp#include <iostream.h>
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
void main(void){
int choice1,choice2,choice3,choice4;
TCHAR fileName[MAX_PATH+255];
DWORD desiredAccess;
DWORD shareMode;
LPSECURITY_ATTRIBUTES securityAttributes;
DWORD creationDisposition;
DWORD flagsAndAttributes;
HANDLE templateFile;
HANDLE file;
desiredAccess=GENERIC_READ|GENERIC_WRITE;//read-write access
shareMode=FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE;//full share
securityAttributes=0;//default security descriptor
flagsAndAttributes=0;
templateFile=0;//no template file
do{
system("cls");
cout<<"1. Create New File\n";
cout<<"2. Open Existing File\n";
cout<<"3. Exit\n";
cout<<"Enter your choice: ";
cin>>choice1;
switch(choice1){
/////////////
case 1: cout<<"Input file name: ";
cin>>fileName;
creationDisposition=CREATE_NEW;//no overwrite
do{
system("cls");
cout<<"1. Archive\n";
cout<<"2. Hidden\n";
cout<<"3. Normal\n";
cout<<"4. Read-Only\n";
cout<<"5. System\n";
cout<<"6 Temporary\n";
cout<<"7 Continue\n";
cout<<"Input file attributes: ";
cin>>choice3;
switch(choice3){
case 1: flagsAndAttributes = FILE_ATTRIBUTE_ARCHIVE;//0x20
break;
case 2: flagsAndAttributes = FILE_ATTRIBUTE_HIDDEN;//0x2
break;
case 3: flagsAndAttributes = FILE_ATTRIBUTE_NORMAL;//0x80
break;
case 4: flagsAndAttributes = FILE_ATTRIBUTE_READONLY;//0x1
break;
case 5: flagsAndAttributes = FILE_ATTRIBUTE_SYSTEM;//0x4
break;
case 6: flagsAndAttributes = FILE_ATTRIBUTE_TEMPORARY;//0x100
break;
case 7: break;
default: cout<<"Error";
getch();
}
}while(choice3!=7);
file=CreateFile(fileName,desiredAccess,shareMode,securityAttributes,creationDisposition,flagsAndAttributes,templateFile);
if(file==INVALID_HANDLE_VALUE)
cout<<"Error";
else {cout<<"The new file is created successfully!\n";
choice1=4;
}
break;
///////////////////////////////////////////
case 2: cout<<"Input file name: ";
cin>>fileName;
creationDisposition=OPEN_EXISTING;//open
file = CreateFile(fileName,desiredAccess,shareMode,securityAttributes,creationDisposition,flagsAndAttributes,templateFile);
if(file==INVALID_HANDLE_VALUE)
{
cout<<"Error"<<endl;
getch();
choice1=4;
}
else
{
LPDWORD FileSize_H=new DWORD(1);
DWORD FileSize_L;
DWORD fileAttributes=0;
LPFILETIME lpCreationTime=new FILETIME;
LPFILETIME lpLastAccessTime=new FILETIME;
LPFILETIME lpLastWriteTime=new FILETIME;
LPSYSTEMTIME Sys_CreationTime=new SYSTEMTIME;
LPSYSTEMTIME Sys_LastAccessTime=new SYSTEMTIME;
LPSYSTEMTIME Sys_LastWriteTime=new SYSTEMTIME;
LPWORD lpFatDate_C=new WORD;
LPWORD lpFatTime_C=new WORD;
LPWORD lpFatDate_A=new WORD;
LPWORD lpFatTime_A=new WORD;
LPWORD lpFatDate_W=new WORD;
LPWORD lpFatTime_W=new WORD;
int flag=0;
do{
system("cls");
cout<<"1. Get File Information By Handle\n";
cout<<"2. Get File Size\n";
cout<<"3. Set File Attributes\n";
cout<<"4. Get File Time\n";
cout<<"5. Exit\n";
cout<<"Enter your choice: ";
cin>>choice2;
switch(choice2){
case 1: _BY_HANDLE_FILE_INFORMATION fileInformation;
SYSTEMTIME fTime;
WORD fatDate;//DOS format date
WORD fatTime;//DOS format time
if(!GetFileInformationByHandle(file, &fileInformation))
cout<<"Error";
else{
cout<<"File attributes:\n";
if(fileInformation.dwFileAttributes&FILE_ATTRIBUTE_ARCHIVE) cout<<" Archive\n";
if(fileInformation.dwFileAttributes&FILE_ATTRIBUTE_COMPRESSED) cout<<" Compressed\n";
if(fileInformation.dwFileAttributes&FILE_ATTRIBUTE_ENCRYPTED) cout<<" Encrypted\n";
if(fileInformation.dwFileAttributes&FILE_ATTRIBUTE_HIDDEN) cout<<" Hidden\n";
if(fileInformation.dwFileAttributes&FILE_ATTRIBUTE_NORMAL) cout<<" Normal\n";
if(fileInformation.dwFileAttributes&FILE_ATTRIBUTE_READONLY) cout<<" Read-Only\n";
if(fileInformation.dwFileAttributes&FILE_ATTRIBUTE_SYSTEM) cout<<" System\n";
if(fileInformation.dwFileAttributes&FILE_ATTRIBUTE_TEMPORARY) cout<<" Temporary\n";
cout<<"Windows format: \n";
if(FileTimeToSystemTime(&fileInformation.ftCreationTime, &fTime)){
cout<<" Creation Time: "<<fTime.wDay<<"."<<fTime.wMonth<<"."<<fTime.wYear<<" ";
cout<<fTime.wHour<<":"<<fTime.wMinute<<":"<<fTime.wSecond<<endl;
}
else cout<<"Error\n";
if(FileTimeToSystemTime(&fileInformation.ftLastAccessTime, &fTime)){
cout<<" Last Access Time: "<<fTime.wDay<<"."<<fTime.wMonth<<"."<<fTime.wYear<<" ";
cout<<fTime.wHour<<":"<<fTime.wMinute<<":"<<fTime.wSecond<<endl;
}
else cout<<"Error\n";
if(FileTimeToSystemTime(&fileInformation.ftLastWriteTime, &fTime)){
cout<<" Last Write Time: "<<fTime.wDay<<"."<<fTime.wMonth<<"."<<fTime.wYear<<" ";
cout<<fTime.wHour<<":"<<fTime.wMinute<<":"<<fTime.wSecond<<endl;
}
else cout<<"Error\n";
cout<<"DOS format: \n";
if(FileTimeToDosDateTime(&fileInformation.ftCreationTime, &fatDate, &fatTime)){
cout<<" Creation Time: "<<(fatDate&0x1F)<<"."<<((fatDate&0x1E0)>>5)<<"."<<((fatDate&0xFE00>>9)+1980)<<" ";
cout<<((fatTime&0xF800)>>11)<<":"<<((fatTime&0x7E0)>>5)<<":"<<((fatTime&0x1F)*2)<<endl;
}
else cout<<"Error\n";
if(FileTimeToDosDateTime(&fileInformation.ftLastAccessTime, &fatDate, &fatTime)){
cout<<" Last Access Time: "<<(fatDate&0x1F)<<"."<<((fatDate&0x1E0)>>5)<<"."<<((fatDate&0xFE00>>9)+1980)<<" ";
cout<<((fatTime&0xF800)>>11)<<":"<<((fatTime&0x7E0)>>5)<<":"<<((fatTime&0x1F)*2)<<endl;
}
else cout<<"Error\n";
if(FileTimeToDosDateTime(&fileInformation.ftLastWriteTime, &fatDate, &fatTime)){
cout<<" Last Write Time: "<<(fatDate&0x1F)<<"."<<((fatDate&0x1E0)>>5)<<"."<<((fatDate&0xFE00>>9)+1980)<<" ";
cout<<((fatTime&0xF800)>>11)<<":"<<((fatTime&0x7E0)>>5)<<":"<<((fatTime&0x1F)*2)<<endl;
}
else cout<<"Error\n";
cout<<"Volume Serial Number: "<<fileInformation.dwVolumeSerialNumber<<endl;
cout<<"File Size High: "<<fileInformation.nFileSizeHigh<<endl;
cout<<"File Size Low: "<<fileInformation.nFileSizeLow<<endl;
cout<<"Number Of Links: "<<fileInformation.nNumberOfLinks<<endl;
cout<<"File Index High: "<<fileInformation.nFileIndexHigh<<endl;
cout<<"File Index Low: "<<fileInformation.nFileIndexLow<<endl;
getch();
}
break;
case 2: FileSize_L=GetFileSize(file,FileSize_H);
if(INVALID_FILE_SIZE==FileSize_L){cout<<"Error!";}
else cout<<"File Size High: "<<*FileSize_H<<" byte"<<"\nFile Size Low: "<<FileSize_L<<" byte";
cout<<flush;
getch();
cout<<flush;
break;
case 3: do{
system("cls");
cout<<"1. Archive\n";
cout<<"2. Hidden\n";
cout<<"3. Normal\n";
cout<<"4. Read-Only\n";
cout<<"5. System\n";
cout<<"6. Temporary\n";
cout<<"7. Not indexed\n";
cout<<"8. Continue\n";
cout<<"Input file attributes: ";
cin>>choice3;
switch(choice3){
case 1: flagsAndAttributes = FILE_ATTRIBUTE_ARCHIVE;//0x20
break;
case 2: flagsAndAttributes = FILE_ATTRIBUTE_HIDDEN;//0x2
break;
case 3: flagsAndAttributes = FILE_ATTRIBUTE_NORMAL;//0x80
break;
case 4: flagsAndAttributes = FILE_ATTRIBUTE_READONLY;//0x1
break;
case 5: flagsAndAttributes = FILE_ATTRIBUTE_SYSTEM;//0x4
break;
case 6: flagsAndAttributes = FILE_ATTRIBUTE_TEMPORARY;//0x100
break;
case 7: flagsAndAttributes = FILE_ATTRIBUTE_NOT_CONTENT_INDEXED;
break;
case 8: break;
default: cout<<"Error";
getch();
}
}while(choice3!=8);
if(!SetFileAttributes(fileName,flagsAndAttributes))//fileAttributes))
cout<<"Error!";
break;
case 4: if(!GetFileTime(file,lpCreationTime,lpLastAccessTime,lpLastWriteTime))cout<<"Error!";
do{
system("cls");
cout<<"\nFormats of date and time.\n\n1. System Time\n2. Dos Time\n3. Return from Dos Time in File Time \n4. Continue";
cout<<"\nEnter your choice: ";
cin>>choice4;
switch(choice4){
case 1: system("cls");
FileTimeToSystemTime(lpCreationTime,Sys_CreationTime);
FileTimeToSystemTime(lpLastAccessTime,Sys_LastAccessTime);
FileTimeToSystemTime(lpLastWriteTime,Sys_LastWriteTime);
cout<<" Creation Time:\n";
cout<<" Year: "<<Sys_CreationTime->wYear;
cout<<" Month: "<<Sys_CreationTime->wMonth;
cout<<" Day Of Week: "<<Sys_CreationTime->wDayOfWeek;
cout<<" Day: "<<Sys_CreationTime->wDay;
cout<<" Hour: "<<Sys_CreationTime->wHour;
cout<<" Minute: "<<Sys_CreationTime->wMinute;
cout<<" Second: "<<Sys_CreationTime->wSecond;
cout<<" Milliseconds: "<<Sys_CreationTime->wMilliseconds;
cout<<"\n Last Access Time:\n";
cout<<" Year: "<<Sys_LastAccessTime->wYear;
cout<<" Month: "<<Sys_LastAccessTime->wMonth;
cout<<" Day Of Week: "<<Sys_LastAccessTime->wDayOfWeek;
cout<<" Day: "<<Sys_LastAccessTime->wDay;
cout<<" Hour: "<<Sys_LastAccessTime->wHour;
cout<<" Minute: "<<Sys_LastAccessTime->wMinute;
cout<<" Second: "<<Sys_LastAccessTime->wSecond;
cout<<" Milliseconds: "<<Sys_LastAccessTime->wMilliseconds;
cout<<"\n Last Write Time:\n";
cout<<" Year: "<<Sys_LastWriteTime->wYear;
cout<<" Month: "<<Sys_LastWriteTime->wMonth;
cout<<" Day Of Week: "<<Sys_LastWriteTime->wDayOfWeek;
cout<<" Day: "<<Sys_LastWriteTime->wDay;
cout<<" Hour: "<<Sys_LastWriteTime->wHour;
cout<<" Minute: "<<Sys_LastWriteTime->wMinute;
cout<<" Second: "<<Sys_LastWriteTime->wSecond;
cout<<" Milliseconds: "<<Sys_LastWriteTime->wMilliseconds;
cout<<flush;
getch();
break;
case 2: system("cls");
FileTimeToDosDateTime(lpCreationTime,lpFatDate_C,lpFatTime_C);
FileTimeToDosDateTime(lpLastAccessTime,lpFatDate_A,lpFatTime_A);
FileTimeToDosDateTime(lpLastWriteTime,lpFatDate_W,lpFatTime_W);
cout<<" Creation Time:\n";
cout<<" Date: "<<*lpFatDate_C<<" Time: "<<*lpFatTime_C;
cout<<"\n Last Access Time:\n";
cout<<" Date: "<<*lpFatDate_A<<" Time: "<<*lpFatTime_A;
cout<<"\n Last Write Time:\n";
cout<<" Date: "<<*lpFatDate_W<<" Time: "<<*lpFatTime_W;
cout<<flush;
getch();
flag=1;
break;
case 3:if(!flag)
break;
system("cls");
DosDateTimeToFileTime(*lpFatDate_C,*lpFatTime_C,lpCreationTime);
DosDateTimeToFileTime(*lpFatDate_A,*lpFatTime_A,lpLastAccessTime);
DosDateTimeToFileTime(*lpFatDate_W,*lpFatTime_W,lpLastWriteTime);
break;
}
}while(choice4!=4);
break;
case 5: CloseHandle(file);
break;
default: cout<<"Error"<<endl;
getch();
}
}while(choice2!=5);
}
break;
////////////////////////////////////////////
case 3: exit(0);
break;
default:cout<<"Error";
getch();
}
}while(choice1 !=3);
}
Соседние файлы в предмете Операционные системы