![]() |
|
|
#1 (permalink) |
|
Sil_Baştan
![]() Üyelik tarihi: Dec 2006
Nerden: İstanbul
Mesaj Sayısı: 2.364
Konu Sayısı: 127
Takım: Fenerbahçe
Rep Gücü: 4350
Rep Puanı: 434699
Rep Derecesi :
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Ruh Hali:
|
Altdizinlerle birlikte dosya ve klasör kopyalamak ve silmek Bir dosyayı ve belirtilen byte (ofset) kadar kopyalamak, Klasik dosya işlemleri. /*---------------------------------------------------------------------- File:CFile.H Author:Huseyin Bora Abaci Last Update:24.01.2005 Platform:Windows Compiler:Borland C++Builder -----------------------------------------------------------------------*/ -------------------------------------------------------------------------------- -----------------------------------------------------------------------*/ #ifndef _CFile_H_ #define _CFile_H_ //----------------------------------------------------------------------- #include "stdio.h" #include "stdlib.h" //----------------------------------------------------------------------- #include "dos.h" #include "dir.h" //----------------------------------------------------------------------- #define _MAX_FILE_NAME (500) #define _MAX_COPY_FNAME (260) class CFile { protected: FILE *In ,*Out; __int64 Size; public: CFile(){Size=0;}//Kurucu int FileCopy(char CopyFile[],char NewFile[]); int FileByte(char ReadFile[],char WriteFile[],long Byte); int FileSize(char FileName[]); void __fastcall CopyTree(char FolderName[_MAX_PATH],char Asterik[],char FolderCopy[_MAX_PATH]); void __fastcall Deltree(char FolderName[]); void __fastcall MoveTree(char DeleteFolder[_MAX_PATH],char FolderCopy[_MAX_PATH]); bool FileDelete(char FileName[]); bool NewFolder(char FolderName[]); bool DeleteFolder(char FolderName[]); bool MoveFile(char DeleteFile[],char CopyFile[]); }; /*---------------------------------------------------------------------------- Dosyanın Bir kopyasını oluşturmak için yazdığım fonksiyon kopyalama işlemi başarılı olduğunda kopyalanan byte kadar geri döşüş değeri alır hata durumunda sıfır ----------------------------------------------------------------------------*/ -------------------------------------------------------------------------------- inline int CFile::FileCopy(char CopyFile[],char NewFile[]) { if((In=fopen(CopyFile,"rb"))==NULL)return 0; if ((Out=fopen(NewFile,"wb"))==NULL)return 0; Size=0; while(!feof(In)) { if(!feof(In))putc(getc(In),Out); Size++; } fclose(In); fclose(Out); return Size; } /*---------------------------------------------------------------------------- Dosyanın Belirtilen Byte ına kadar kopyalayan fonksiyon kopyalama işlemi başarılı olduğunda kopyalanan byte kadar geri döşüş değeri alır hata durumunda sıfır ----------------------------------------------------------------------------*/ -------------------------------------------------------------------------------- inline int CFile::FileByte(char ReadFile[],char WriteFile[],long Byte) { if((In=fopen(ReadFile,"rb"))==NULL)return 0 ; if((Out=fopen(WriteFile,"wb"))==NULL)return 0 ; Size=0; while(!feof(In)) { Size++; putc(getc(In),Out); if(Size==Byte)break; } fclose(In); fclose(Out); return Size; } /*---------------------------------------------------------------------------- Dosyanın byte cinsinden boyutunu döndüren fonksiyon ----------------------------------------------------------------------------*/ -------------------------------------------------------------------------------- inline int CFile::FileSize(char FileName[]) { if((In=fopen(FileName,"r+"))==NULL) return 0; fseek(In,0L,SEEK_END); return ftell(In); fclose(In); } //Klasik Dosya işlemleri -------------------------------------------------------------------------------- //--------------------------------------------------------------------------- bool CFile::FileDelete(char FileName[]) { if(remove(FileName)) return true; } //---------------------------------------------------------------------------- bool CFile::NewFolder(char FolderName[]) { if(mkdir(FolderName)) return true; } //---------------------------------------------------------------------------- bool CFile:eleteFolder(char FolderName[]) { if(rmdir(FolderName)) return true; } //Dosya Taşı //---------------------------------------------------------------------------- bool CFile::MoveFile(char DeleteFile[],char CopyFile[]) { FileCopy(DeleteFile,CopyFile); if(remove(DeleteFile)) return true; } /*---------------------------------------------------------------------------- Dizin yapısını olduğu gibi kopyalayan fonksiyon ----------------------------------------------------------------------------*/ -------------------------------------------------------------------------------- void __fastcall CFile:: CopyTree(char FolderName[_MAX_PATH],char Joker[],char FolderCopy[_MAX_PATH]) { struct ffblk fp; int States; char NextNewFolder[_MAX_FILE_NAME], Files1[_MAX_FILE_NAME], Files2[_MAX_FILE_NAME], FA[_MAX_FILE_NAME], Folder[_MAX_FILE_NAME], NextSourceFolder[_MAX_FILE_NAME]; sprintf(FA,"%s%s",FolderName,Joker); States =findfirst(FA,&fp,0|FA_DIREC|FA_HIDDEN); while(!States) { if(fp.ff_attrib & 0x10) /*FA_DIREC 0x10 Directory */ { sprintf(Folder,"%s%s",FolderCopy,fp.ff_name); if((strcmp(fp.ff_name,".")>1) && (strcmp(fp.ff_name,"..")>1)) { mkdir(Folder); sprintf(NextSourceFolder,"%s%s%s",FolderName,fp.ff _name,"\\"); sprintf(NextNewFolder,"%s%s%s",FolderCopy,fp.ff_na me,"\\"); CopyTree(NextSourceFolder,Joker,NextNewFolder); } } sprintf(Files1,"%s%s", FolderName,fp.ff_name); sprintf(Files2,"%s%s",FolderCopy,fp.ff_name); FileCopy(Files1,Files2); States=findnext(&fp); } findclose(&fp); } //------------------------------------------------------------------------ /*Verilen Dizin yapısını olduğu gibi kaldıran fonksiyon*/ //------------------------------------------------------------------------ -------------------------------------------------------------------------------- void __fastcall CFile:eltree(char FolderName[]) { struct ffblk *fd=new ffblk; char files[_MAX_FILE_NAME],FA[_MAX_FILE_NAME],Folder[_MAX_FILE_NAME]=""; sprintf(FA,"%s%s",FolderName,"*.*"); findfirst(FA,fd,0|FA_DIREC|FA_HIDDEN); do { if(fd->ff_attrib & 0x10) /*FA_DIREC 0x10 Directory */ if((strcmp(fd->ff_name,".")>1) && (strcmp(fd->ff_name,"..")>1)) { sprintf(Folder,"%s%s%s",FolderName,fd->ff_name,"\\"); Deltree(Folder); if(rmdir(Folder)); //Burda Bir Gecikme Gerikyordu if(rmdir(Folder)) ile gecikme sağlandı if(rmdir(Folder)); } if((strcmp(fd->ff_name,".")>1) && (strcmp(fd->ff_name,"..")>1)) { sprintf(files,"%s%s",FolderName,fd->ff_name); if(remove(files)); } } while(!findnext(fd)); findclose(fd); } //Verilen Dizin yapısını taşıyan fonksiyon -------------------------------------------------------------------------------- void __fastcall CFile::MoveTree(char DeleteFolder[_MAX_PATH],char FolderCopy[_MAX_PATH]) { NewFolder(FolderCopy); CopyTree(DeleteFolder,"*.*",FolderCopy); Deltree(DeleteFolder); rmdir(DeleteFolder); } #endif//header dosya sonu Sınıfınfı nasıl kullanacaksınız #include <CFile> main (){ CFile *File1 =new CFile(); File1->CopyTree("C:\\Windows","*.*","D:\\Test"); File->FileByte("C:\\Prog.exe","C:\\200Byte.exe",200); //Dosyanın ilk 200 byte nını kopyalar } __________________
__________________
bir silahım olsaydı...
![]() hiç bir farklılık ayrımcılığa neden olamaz. Hürriyet Hürriyettir. |
|
|
|
![]() |
| Seçenekler | |
| Stil | |
|
|