#include"iostream"
#include<conio.h>
#include"fstream"
using namespace std;
void MainMenu(char);
class File_System
{
double SizeOfFileSystem,
SizeOfFirstBlock,
SizeOfFirstSubBlock,
SizeOfSecondBlock,
SizeOfSecondSubBlock,
SizeOfThirdBlock,
SizeOfThirdSubBlock;
char Delimiter;
public:
File_System()
{
Delimiter = '$';
ofstream WFile("File System.txt",ios::_Noreplace);
if( WFile.is_open())
{
system("CLS");
cout<<"\n\n\t\t\tWelcom To File System \n\n\n";
cout<<"\tEnter The Size Of File System In Bytes : ";
cin>>SizeOfFileSystem;
cout<<"\n\tEnter The Size Of First Block In Bytes : ";
cin>>SizeOfFirstBlock ;
while(SizeOfFirstBlock >= SizeOfFileSystem )
{
cout<<"\n\t"<<SizeOfFirstBlock <<" Bytes Is Not A Valid Size For First Block \n\tPlease Enter Valid Size : ";
cin>>SizeOfFirstBlock ;
}
cout<<"\n\tEnter The Size Of First Sub Block In Bytes : ";
cin>>SizeOfFirstSubBlock;
while ( SizeOfFirstSubBlock >= SizeOfFirstBlock )
{
cout<<"\n\t"<<SizeOfFirstSubBlock <<" Bytes Is Not A Valid Size For First Sub Block \n\tPlease Enter Valid Size : ";
cin>>SizeOfFirstSubBlock ;
}
cout<<"\n\tEnter The Size Of Second Block In Bytes : ";
cin>>SizeOfSecondBlock;
while(SizeOfSecondBlock >= SizeOfFileSystem )
{
cout<<"\n\t"<<SizeOfSecondBlock <<" Bytes Is Not A Valid Size For Second Block \n\tPlease Enter Valid Size : ";
cin>>SizeOfSecondBlock ;
}
cout<<"\n\tEnter The Size Of Second Sub Block In Bytes : ";
cin>>SizeOfSecondSubBlock ;
while ( SizeOfSecondSubBlock >= SizeOfSecondBlock )
{
cout<<"\n\t"<<SizeOfSecondSubBlock <<" Bytes Is Not A Valid Size For Second Sub Block \n\tPlease Enter Valid Size : ";
cin>>SizeOfSecondSubBlock ;
}
cout<<"\n\tEnter The Size Of Third Block In Bytes : ";
cin>>SizeOfThirdBlock ;
while(SizeOfThirdBlock >= SizeOfFileSystem )
{
cout<<"\n\t"<<SizeOfThirdBlock <<" Bytes Is Not A Valid Size For Third Block \n\tPlease Enter Valid Size : ";
cin>>SizeOfThirdBlock ;
}
cout<<"\n\tEnter The Size Of Third Sub Block In Bytes : ";
cin>>SizeOfThirdSubBlock;
while ( SizeOfThirdSubBlock >= SizeOfThirdBlock)
{
cout<<"\n\t"<<SizeOfThirdSubBlock <<" Bytes Is Not A Valid Size For Third Sub Block \n\tPlease Enter Valid Size : ";
cin>>SizeOfThirdSubBlock ;
}
system("CLS");
cout<<"\n\n\t\t\tFeatures Of File System System \n\n\n";
cout<<"\n\tSize of File System : "<<SizeOfFileSystem <<" Bytes";
cout<<"\n\n\tSize of First Block : "<<SizeOfFirstBlock <<" Bytes";
cout<<"\n\tSize of First Sub Block : "<<SizeOfFirstSubBlock<<" Bytes";
cout<<"\n\n\tSize of Second Block : "<<SizeOfSecondBlock <<" Bytes";
cout<<"\n\tSize of Second Sub Block : "<<SizeOfSecondSubBlock <<" Bytes";
cout<<"\n\n\tSize of Third Block : "<<SizeOfThirdBlock <<" Bytes";
cout<<"\n\tSize of Third Sub Block : "<<SizeOfThirdSubBlock <<" Bytes";
cout<<"\n\nTo Create File System Press Any Key To Continue OR To Exit Press \"E\" ";
char check = getch();
if(check == 'E' || check == 'e' )
{
WFile.close();
remove("File System.txt");
MainMenu('7');
}
cout <<"\n\tFile System Is Being Created ..... ";
for (double i = 0; i < SizeOfFileSystem ; i++)
{
if (i == SizeOfFirstBlock )
{
WFile.put(Delimiter);
}
else if (i>SizeOfFirstBlock && i < (SizeOfFirstBlock+SizeOfSecondBlock ))
{
double index =0,
block = 1;
while (block <= SizeOfThirdBlock / SizeOfThirdSubBlock )
{
WFile.seekp(i);
WFile<<(SizeOfFirstBlock + SizeOfSecondBlock + 1+ ( index * SizeOfThirdSubBlock ));
index ++;
i +=SizeOfSecondSubBlock ;
block ++;
}
i +=SizeOfSecondSubBlock ;
while (i<(SizeOfSecondBlock + SizeOfFirstBlock) )
{
i++;
}
WFile.seekp(i);
WFile.put(Delimiter);
}
else if (i == (SizeOfFirstBlock + SizeOfSecondBlock + SizeOfThirdBlock -1))
{
WFile.put(Delimiter);
}
else
{
WFile.put(0);
}
}
ofstream infofile("File System.dll",ios::_Noreplace);
infofile<<SizeOfFileSystem;
infofile<<' ';
infofile<<SizeOfFirstBlock;
infofile<<' ';
infofile<<SizeOfFirstSubBlock ;
infofile<<' ';
infofile<<SizeOfSecondBlock;
infofile<<' ';
infofile<<SizeOfSecondSubBlock ;
infofile<<' ';
infofile<<SizeOfThirdBlock;
infofile<<' ';
infofile<<SizeOfThirdSubBlock;
infofile<<' ' ;
infofile.close();
}
else
{
ifstream RFile("File System.dll",ios::in);
if(RFile.is_open())
{
RFile>>SizeOfFileSystem;
RFile>> SizeOfFirstBlock;
RFile>>SizeOfFirstSubBlock ;
RFile>>SizeOfSecondBlock ;
RFile>>SizeOfSecondSubBlock ;
RFile>>SizeOfThirdBlock ;
RFile>> SizeOfThirdSubBlock;
}
else
{
cout<<"\n\n\tError In Loading File System ...... ";
getch();
exit(1);
}
}
}
~ File_System ()
{
}
void CreatNewFile();
double GetEmptyBlockOfData();
double GetEmptyBlockOfFileName(char []);
void DeleletFile();
void ViewAllFiles();
void SearchFile();
void CopyFileFromWindows();
void CopyFileFromFileSystem();
void EmptySpace();
void Exit();
};
void File_System :: CreatNewFile ()
{
fstream RWfile("File System.txt");
if(RWfile.is_open())
{
system("CLS");
cout<<"\n\n\t\t\tWelcom To File Create Wizard \n\n\n";
int SizeofFileName = SizeOfFirstSubBlock ; // coversion double to int use for new operator
char *NameofFile = new char[SizeofFileName];
cout<<"\n\nTo Create File Press Any Key To Continue OR To Return In Main Menu Press \"M\" ";
char check = getch();
if(check == 'M' || check == 'm' )
{
RWfile.close();
MainMenu('0');
}
NameofFile[0]=NULL;
system("CLS");
cout<<"\n\n\t\t\tWelcom To File Create Wizard \n\n\n";
cout<<"\n\tPlease Enter Name Of File : ";
cin.getline(NameofFile ,SizeofFileName );
if(strlen(NameofFile)==0)
{
cout<<"\n\tYou Have To Must Enter Name Of File ....\x01";
getch();
MainMenu('1');
}
int SizeofDataFile = 10485760; // coversion double to int use for new operator
char *DataOfFile = new char[SizeofDataFile ];
cout<<"\n\tPlease Enter Data Of File : \n\n\tNOTE: At the End Of Data One Must Enter \'@\' \n\t";
//cin>>DataOfFile;
cin.getline(DataOfFile,SizeofDataFile,'@');
if (strlen(DataOfFile) > SizeOfThirdSubBlock )
{
double EmptyBlockOfFileName=GetEmptyBlockOfFileName(NameofFile );
RWfile.seekp(EmptyBlockOfFileName );
double EmptyBlockOfData=GetEmptyBlockOfData();
RWfile<<NameofFile<<' '<<EmptyBlockOfData;
int SizeOfDataBlock = SizeOfThirdSubBlock;
char *str= new char [SizeOfDataBlock];
int size = strlen(DataOfFile);
while (strlen(DataOfFile) > (SizeOfDataBlock - 50) )
{
int i;
for(i = 0 ; i<(SizeOfDataBlock - 50) ; i++)
str[i]=DataOfFile[i];
str[i]=NULL;
int ii;
for(ii=0; ii<(strlen(DataOfFile) - (SizeOfDataBlock - 50) ); ii++)
DataOfFile[ii]=DataOfFile[ii + SizeOfDataBlock - 50];
DataOfFile[ii]=NULL;
RWfile.seekp(EmptyBlockOfData );
RWfile<<str;
RWfile<<Delimiter ;
double NextDataBlock = GetEmptyBlockOfData();
RWfile<<NextDataBlock;
EmptyBlockOfData = NextDataBlock ;
}
RWfile.seekp(EmptyBlockOfData );
RWfile<<DataOfFile;
RWfile<<Delimiter ;
}
else
{
double EmptyBlockOfFileName=GetEmptyBlockOfFileName(NameofFile );
RWfile.seekp(EmptyBlockOfFileName );
double EmptyBlockOfData=GetEmptyBlockOfData();
RWfile<<NameofFile<<' '<<EmptyBlockOfData;
RWfile.seekp(EmptyBlockOfData );
RWfile<<DataOfFile;
RWfile<<Delimiter ;
}
RWfile.close();
delete NameofFile,DataOfFile ;
}
}
double File_System :: GetEmptyBlockOfData()
{
fstream RWfile("File System.txt");
if(RWfile.is_open())
{
double EmptyBlock=NULL;
for(int i=0 ;i<=(SizeOfThirdBlock / SizeOfThirdSubBlock ) ; i++)
{
RWfile.seekp(SizeOfFirstBlock + 1 + ( i * SizeOfSecondSubBlock ));
RWfile>>EmptyBlock;
if(EmptyBlock)
{
RWfile.seekp(SizeOfFirstBlock + 1 + ( i * SizeOfSecondSubBlock ));
int SizeOfEmptyBlockAdress = EmptyBlock;
while (SizeOfEmptyBlockAdress) //for deletion of adress in second block after geting adress oF empty data block
{
RWfile<<NULL;
SizeOfEmptyBlockAdress /=10;
}
return EmptyBlock;
}
}
RWfile.close();
cout<<"\n\tThere Is Not Enough Space In File System To Create More File \n";
getch();
MainMenu('0');
}
else
{
cout<<"\n\tAn Error Occurred to Open the File System .....\x01\n\tTry Again Latter\n\n";
cout<<"\n\nTo Try Again Press Any Key To Continue OR To Exit Press \"E\" ";
char check = getch();
if(check == 'E' || check == 'e' )
{
RWfile.close();
MainMenu('7');
}
MainMenu('0');
}
}
double File_System :: GetEmptyBlockOfFileName(char NameOfFile[])
{
fstream RWfile("File System.txt");
if(RWfile.is_open())
{
for(int i=0; i<(SizeOfFirstBlock/SizeOfFirstSubBlock ) ; i++)
{
double block = (1 + ( i * SizeOfFirstSubBlock ));
RWfile.seekg(block);
char check;
RWfile.get(check);
if(check == NULL )
{
return block;
}
int SizeofFileName = SizeOfFirstSubBlock ; // convert double into int for new operator
char *RenameCheck = new char[SizeofFileName];
RWfile.seekg(block);
RWfile>>RenameCheck;
if( strcmp ( RenameCheck , NameOfFile) == 0 )
{
cout<<"\n\tFile Of Same Name "<<NameOfFile <<" Is Already Exist In File System \n\tTry Any Other Name \x01 ";
cout<<"\n\n Press Any Key To Continue OR To Return In Main Menu \"M\" ";
char check = getch();
if(check == 'M' || check == 'm' )
{
RWfile.close();
MainMenu('0');
}
delete RenameCheck ;
MainMenu('1');
}
}
RWfile.close();
cout<<"\n\tThere Is Not Enough Space In File System To Create More File \n";
cout<<"\n\nTo Try Again Press Any Key To Continue OR To Exit Press \"E\" ";
char check = getch();
if(check == 'E' || check == 'e' )
{
RWfile.close();
MainMenu('7');
}
}
else
{
cout<<"\n\tAn Error Occurred to Open the File System .....\x01\n\tTry Again Latter\n\n";
cout<<"\n\nTo Try Again Press Any Key To Continue OR To Exit Press \"E\" ";
char check = getch();
if(check == 'E' || check == 'e' )
{
RWfile.close();
MainMenu('7');
}
MainMenu('0');
}
}
void File_System :: DeleletFile()
{
fstream Rfile("File System.txt",ios :: in);
if(Rfile.is_open())
{
system("CLS");
cout<<"\n\n\t\t\tWelcom To Delete A File Wizard \n\n\n";
Rfile.close ();
}
else
{
cout<<"\n\tAn Error Occurred to Open the File System .....\x01\n\tTry Again Latter\n\n";
getch();
MainMenu('0');
}
}
void File_System :: ViewAllFiles()
{
fstream Rfile("File System.txt",ios :: in);
if(Rfile.is_open())
{
system("CLS");
cout<<"\n\n\t\t\tWelcom To View All Files Wizard \n\n\n";
cout<<"\tName Of File \t\tAdress Of File ";
for(int i=0; i<(SizeOfFirstBlock/SizeOfFirstSubBlock ) ; i++)
{
double block = (1 + ( i * SizeOfFirstSubBlock ));
int SizeofFileName = SizeOfFirstSubBlock ; // coversion double to int use for new operator
char *NameofFile = new char[SizeofFileName];
Rfile.seekg(block);
Rfile>>NameofFile;
double AdressOfFile=NULL;
Rfile>>AdressOfFile;
if(AdressOfFile)
{
cout<<"\n\t"<<NameofFile<<"\t\t\t"; cout<<AdressOfFile;
}
}
cout<<"\n\n Press Any Key To Continue OR\n To See Data Of Any File press \"S\" OR \n To Return In Main Menu press \"M\" ";
char check = getch();
if(check == 'M' || check == 'm' )
{
Rfile.close();
MainMenu('0');
}
else if (check == 'S' || check == 's' )
{
Rfile.close();
MainMenu('3');
}
Rfile.close ();
}
else
{
cout<<"\n\tAn Error Occurred to Open the File System .....\x01\n\tTry Again Latter\n\n";
cout<<"\n\nTo Try Again Press Any Key To Continue OR To Exit Press \"E\" ";
char check = getch();
if(check == 'E' || check == 'e' )
{
Rfile.close();
MainMenu('7');
}
MainMenu('0');
}
}
void File_System :: SearchFile ()
{
fstream Rfile("File System.txt",ios :: in);
if(Rfile.is_open())
{
system("CLS");
cout<<"\n\n\t\t\tWelcom To Search A File Wizard \n\n\n";
cout<<"\n\n Press Any Key To Continue Search OR To Return In Main Menu Press \"M\" ";
char check = getch();
if(check == 'M' || check == 'm' )
{
Rfile.close();
MainMenu('6');
}
system("CLS");
cout<<"\n\n\t\t\tWelcom To Search A File Wizard \n\n\n";
cout<<"\n\n\tEnter The Complete Name Of File Which You Want To Search : ";
int SizeOfFileName = SizeOfFirstSubBlock ;
char *SearchName = new char[SizeOfFileName];
cin>>SearchName;
char *NameOfFile =new char[SizeOfFileName];
double AdressOfFile=NULL;
for(int i=0; i<(SizeOfFirstBlock/SizeOfFirstSubBlock ) ; i++)
{
double block = (1 + ( i * SizeOfFirstSubBlock ));
Rfile.seekg(block);
Rfile>>NameOfFile;
Rfile>>AdressOfFile;
if ( strcmp(NameOfFile,SearchName ) == 0 )
{
cout<<"\n\n\tName Of File : "<<NameOfFile;
cout<<"\n\tAddress of File : "<<AdressOfFile;
int SizeOfData = 10485760 ;
char *Data= new char[SizeOfData];
char check = NULL ;
int index = 0;
double NextDataBlock = NULL;
do
{
Rfile.seekg(AdressOfFile);
NextDataBlock = NULL;
Rfile.get(check); //for avoiding of Delimiters
while (check != Delimiter )
{
Data[index++]= check;
Rfile.get(check);
}
check = NULL;
Rfile>>NextDataBlock;
AdressOfFile = NextDataBlock ;
}while (NextDataBlock);
Data[index]='\0';
cout<<"\n\tData Of File is : "<<Data;
cout<<"\n\n\n To Search Again press \"S\" OR \n To Return In Main Menu press \"M\" ";
char checkc = getch();
if(checkc != 's' || checkc != 'S' )
{
Rfile.close();
MainMenu('0');
}
else if (checkc == 'S' || checkc == 's' )
{
Rfile.close();
MainMenu('3');
}
delete Data;
}
}
cout<<"\n File Not Found ... \x01 \n To Search Again press \"S\" OR \n To Return In Main Menu press \"M\" ";
char checkc = getch();
if(checkc == 'M' || checkc == 'm' )
{
Rfile.close();
MainMenu('0');
}
else if (checkc == 'S' || checkc == 's' )
{
Rfile.close();
MainMenu('3');
}
delete NameOfFile,AdressOfFile;
Rfile.close ();
}
else
{
cout<<"\n\tAn Error Occurred to Open the File System .....\x01\n\tTry Again Latter\n\n";
cout<<"\n\nTo Try Again Press Any Key To Continue OR To Exit Press \"E\" ";
char check = getch();
if(check == 'E' || check == 'e' )
{
Rfile.close();
MainMenu('7');
}
MainMenu('0');
}
}
void File_System :: CopyFileFromWindows ()
{
fstream RWfile("File System.txt");
if(RWfile.is_open())
{
system("CLS");
cout<<"\n\n\t\t\tWelcom To Copy File From Windows Wizard \n\n\n";
cout<<"\n\tEnter The name of file Which You Want To Copy From Windows + Its Compelte Address : ";
int SizeofFileName = SizeOfFirstSubBlock ; // coversion double to int use for new operator
char *NameofFile = new char[SizeofFileName];
cin>>NameofFile;
fstream Ofile(NameofFile,ios::in);
int SizeofDataFile = 10485760;
char *DataOfFile = new char[SizeofDataFile ];
if(Ofile.is_open())
{
int index=0;
while (Ofile)
{
Ofile.get(DataOfFile[index++]);
}
DataOfFile[index]='\0';
if (strlen(DataOfFile) > SizeOfThirdSubBlock )
{
double EmptyBlockOfFileName=GetEmptyBlockOfFileName(NameofFile );
RWfile.seekp(EmptyBlockOfFileName );
double EmptyBlockOfData=GetEmptyBlockOfData();
RWfile<<NameofFile<<' '<<EmptyBlockOfData;
int SizeOfDataBlock = SizeOfThirdSubBlock;
char *str= new char [SizeOfDataBlock];
int size = strlen(DataOfFile);
int SpaceForNextAddress = 50;
while (strlen(DataOfFile) > (SizeOfDataBlock - SpaceForNextAddress ) )
{
int i;
for(i = 0 ; i<(SizeOfDataBlock - SpaceForNextAddress) ; i++)
str[i]=DataOfFile[i];
str[i]=NULL;
int ii;
for(ii=0; ii<(strlen(DataOfFile) - (SizeOfDataBlock - SpaceForNextAddress) ); ii++)
DataOfFile[ii]=DataOfFile[ii + SizeOfDataBlock - SpaceForNextAddress];
DataOfFile[ii]=NULL;
RWfile.seekp(EmptyBlockOfData );
RWfile<<str;
RWfile<<Delimiter ;
double NextDataBlock = GetEmptyBlockOfData();
RWfile<<NextDataBlock;
EmptyBlockOfData = NextDataBlock ;
}
RWfile.seekp(EmptyBlockOfData );
RWfile<<DataOfFile;
RWfile<<Delimiter ;
}
else
{
double EmptyBlockOfFileName=GetEmptyBlockOfFileName(NameofFile );
RWfile.seekp(EmptyBlockOfFileName );
double EmptyBlockOfData=GetEmptyBlockOfData();
RWfile<<NameofFile<<' '<<EmptyBlockOfData;
RWfile.seekp(EmptyBlockOfData );
RWfile<<DataOfFile;
RWfile<<Delimiter ;
}
}
else
{
cout<<"\n\tAn Error Occurred to Open the File .....\x01\n\tTry Again Latter\n\n";
}
cout<<"\n\n\tFile Copy Successfully ... ";
cout<<"\n To Copy Any Other File press \"C\" OR \n To Return In Main Menu press \"M\" ";
char checkc = getch();
if(checkc != 'C' || checkc != 'c' )
{
RWfile.close();
MainMenu('0');
}
else if (checkc == 'C' || checkc == 'c' )
{
RWfile.close();
MainMenu('4');
}
}
else
{
cout<<"\n\tAn Error Occurred to Open the File System .....\x01\n\tTry Again Latter\n\n";
cout<<"\n\nTo Try Again Press Any Key To Continue OR To Exit Press \"E\" ";
char check = getch();
if(check == 'E' || check == 'e' )
{
RWfile.close();
MainMenu('7');
}
MainMenu('0');
}
}
void File_System :: CopyFileFromFileSystem()
{
fstream Rfile("File System.txt",ios :: in);
if(Rfile.is_open())
{
system("CLS");
cout<<"\n\n\t\tWelcom To Copy File From File System Wizard \n\n\n";
cout<<"\n\n\tEnter The Complete Name Of File Which You Want To Copy : ";
int SizeOfFileName = SizeOfFirstSubBlock ;
char *SearchName = new char[SizeOfFileName];
cin>>SearchName;
char *NameOfFile =new char[SizeOfFileName];
double AdressOfFile=NULL;
for(int i=0; i<(SizeOfFirstBlock/SizeOfFirstSubBlock ) ; i++)
{
double block = (1 + ( i * SizeOfFirstSubBlock ));
Rfile.seekg(block);
Rfile>>NameOfFile;
Rfile>>AdressOfFile;
if ( strcmp(NameOfFile,SearchName ) == 0 )
{
char *AddressOffile = new char[100];
char *NameOfFile=new char[50];
cout<<"\n\tEnter The Address Where You Want To Create File ";
cin>>AddressOffile;
strcat(AddressOffile,SearchName);
ofstream Wfile(AddressOffile,ios::out | ios::_Noreplace );
if(Wfile.is_open())
{
int SizeOfData = 10485760 ;
char *Data= new char[SizeOfData];
char check = NULL ;
int index = 0;
double NextDataBlock = NULL;
do
{
Rfile.seekg(AdressOfFile);
NextDataBlock = NULL;
Rfile.get(check); //for avoiding of Delimiters
while (check != Delimiter )
{
Data[index++]= check;
Rfile.get(check);
}
check = NULL;
Rfile>>NextDataBlock;
AdressOfFile = NextDataBlock ;
}while (NextDataBlock);
Data[index]='\0';
Wfile<<Data;
Wfile.close();
delete Data;
cout<<"\n\n\tFile Copy Successfully ... ";
cout<<"\n To Copy Any Other File press \"C\" OR \n To Return In Main Menu press \"M\" ";
char checkc = getch();
if(checkc != 'C' || checkc != 'c' )
{
Rfile.close();
MainMenu('0');
}
else if (checkc == 'C' || checkc == 'c' )
{
Rfile.close();
MainMenu('5');
}
}
else
{
cout<<"\n\tAn Error Occurred In Creation New File .....\x01\n\t*May Be Any Other File Exist In Same Location Having Same Name..\n\tTry Again Latter\n\n";
cout<<"\n\nTo Try Again Press Any Key To Continue OR To Exit Press \"E\" ";
char check = getch();
if(check == 'E' || check == 'e' )
{
Rfile.close();
MainMenu('7');
}
MainMenu('5');
}
}
}
cout<<"\n " <<NameOfFile <<" Not Found In File System ... \x01 \n To Try Any Other press \"C\" OR \n To Return In Main Menu press \"M\" ";
char checkc = getch();
if(checkc == 'M' || checkc == 'm' )
{
Rfile.close();
MainMenu('0');
}
else if (checkc == 'C' || checkc == 'c' )
{
Rfile.close();
MainMenu('5');
}
delete NameOfFile,AdressOfFile;
Rfile.close ();
}
else
{
cout<<"\n\tAn Error Occurred to Open the File System .....\x01\n\tTry Again Latter\n\n";
cout<<"\n\nTo Try Again Press Any Key To Continue OR To Exit Press \"E\" ";
char check = getch();
if(check == 'E' || check == 'e' )
{
Rfile.close();
MainMenu('7');
}
MainMenu('0');
}
}
void File_System :: EmptySpace()
{
fstream Rfile("File System.txt",ios :: in);
if(Rfile.is_open())
{
system("CLS");
cout<<"\n\n\t\t\tWelcom To Mermory Status Wizard \n\n\n";
int FreeBlocks = NULL;
for( int i =0 ; i<(SizeOfThirdBlock /SizeOfThirdSubBlock ) ; i++)
{
double Block= SizeOfFirstBlock + 1 +(i*(SizeOfSecondBlock ));
double check=NULL;
Rfile.seekg(Block);
Rfile>>check;
if(check == NULL)
{
++FreeBlocks;
}
}
cout<<"++FreeBlocks; " <<FreeBlocks;
cout<<"\n\tTotal Size Of File System : "<<(SizeOfFirstBlock + SizeOfSecondBlock + SizeOfThirdBlock )<<" Bytes ";
cout<<"\n\n\t Capacity Of Storage : "<< ( SizeOfThirdBlock ) <<" Bytes ";
cout<<"\n\n\n\t Used Space : "<< (SizeOfThirdBlock - (FreeBlocks * SizeOfThirdSubBlock )) <<" Bytes ";
cout<<"\n\n\n\t Free Space : "<< (FreeBlocks * SizeOfThirdSubBlock ) <<" Bytes ";
getch();
Rfile.close ();
}
else
{
cout<<"\n\tAn Error Occurred to Open the File System .....\x01\n\tTry Again Latter\n\n";
cout<<"\n\nTo Try Again Press Any Key To Continue OR To Exit Press \"E\" ";
char check = getch();
if(check == 'E' || check == 'e' )
{
Rfile.close();
MainMenu('7');
}
MainMenu('0');
}
}
void File_System :: Exit()
{
exit(1);
}
void MainMenu(char a = '0') //default arrgument , if user call this function with an arguument then argumental value would assign to "a" , and if user call thiz function without arrgument then by default "0" would assign to "a"
{
static File_System test;
if(a == '0')
{
system("CLS");
cout<<"\n\n\t\t\tWelcom To File System \n\n\n";
cout<<"\tMain Menu: \n";
cout<<"\n\t1). To Create A New File\n";
cout<<"\n\t2). To View All Files\n";
cout<<"\n\t3). To Search A File\n";
cout<<"\n\t4). To Copy File From Windows\n";
cout<<"\n\t5). To Copy File From File System\n";
cout<<"\n\t6). To See Memory Status \n";
cout<<"\n\t7). To EXit From System ";
cout<<"\n\n\tChoose your Choice : ";
a=getch();
}
switch(a)
{
case '1':
{
test.CreatNewFile ();
break;
}
case '2':
{
test.ViewAllFiles ();
break;
}
case '3':
{
test.SearchFile ();
break;
}
case '4':
{
test.CopyFileFromWindows ();
break;
}
case '5':
{
test.CopyFileFromFileSystem();
break;
}
case '6':
{
test.EmptySpace ();
break;
}
case '7':
{
test.Exit ();
break;
}
}
MainMenu();
}
void main()
{
MainMenu();
system("PAUSE");
}
0 comments: