Geri git   Programlama ve Elektronik > Programlama Yazılım > C - C++ - C# - Visual C++ - Visual C# > Konu ve Anlatımlar
Kayıt ol Yardım Community Bugünki Mesajlar Arama

Cevapla
 
Seçenekler Stil
Alt 17. May 2008, 03:17 AM   #1 (permalink)
Amatör
 
McDroPp - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Mar 2008
Nerden: C# SQl Server 2008 İnformation Technology's Server Secretary And Aspx To lınk Tecnolojıes,Mybb
Mesajlar: 51
Standart C++ Klasör ve Dosya İşlemleri için Kullanabileceğiniz Bir Sınıf

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(In0LSEEK_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(DeleteFileCopyFile);
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"FolderNameJoker);
States =findfirst(FA&fp0|FA_DIREC|FA_HIDDEN);
while(!States)
{
if(fp.ff_attrib & 0x10) /*FA_DIREC 0x10 Directory */
{
sprintf(Folder"%s%s"FolderCopyfp.ff_name);
if((strcmp(fp.ff_name".")>1) && (strcmp(fp.ff_name"..")>1))
{
mkdir(Folder);
sprintf(NextSourceFolder"%s%s%s"FolderNamefp.ff _name"\\");
sprintf(NextNewFolder"%s%s%s"FolderCopyfp.ff_na me"\\");
CopyTree(NextSourceFolderJokerNextNewFolder);
}
}
sprintf(Files1"%s%s" FolderNamefp.ff_name);
sprintf(Files2"%s%s"FolderCopyfp.ff_name);
FileCopy(Files1Files2);
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(FAfd0|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"FolderNamefd->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"FolderNamefd->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
__________________
بِسْــــــــــــــــــــــمِ اﷲِارَّحْمَنِ ارَّحِيم

-------------------------------------------------

Bu Soysuzlar Bu Vatansızlar Sarsada Yurdumu Ben Yaratan'dan Alırım Asil Kanı ve Gücü.
-------------------------------------------------
McDroPp isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla


Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Visual C#.NET'te Veritabanı İşlemleri - 2 McDroPp Örnek Kodlar 0 17. May 2008 03:42 AM