Curso completo de DarkGdk
Gameprog - Escola de programação de jogos digitais
Contato: gameprog.br@gmail.com
Fase 16.3

index << >>



16.3 Operações sobre arquivos e pastas

1.1 Visão geral


Vamos assimilar neste tópico as operações básicas tais como copiar, renomear e 
deletar pastas e arquivos.

Vamos estudar as seguintes funções:

dbMakeDirectory()	- Criar diretório	
dbDeleteDirectory()	- Deletar o diretório

dbCopyFile()		- Copiar arquivo
dbRenameFile()		- Renomear arquivo
dbDeleteFile()		- Deletar arquivo

---------------------------------------------------------------------------
dbMakeDirectory( sPasta)
void dbMakeDirectory ( char* szDirectory )
Essa função cria um diretório. 

Ex.: 
dbMakeDirectory("c:\\gdkTeste"); 

---------------------------------------------------------------------------
dbDeleteDirectory(sPasta)
void dbDeleteDirectory ( char* szDirectory )
Essa função deleta o diretório especificado. O diretório deve estar
vazio para o sucesso dessa operação e a pasta não deve estar sendo
usada como diretório de trabalho.

Ex.: 
dbDeleteDirectory("c:\\gdkTeste") 	

---------------------------------------------------------------------------
dbCopyFile (sArquivoFonte, sDestinoArquivo) 
void dbCopyFile ( char* szSourceFilename, char* szDestinationFilename )
Essa função copia o arquivo fonte para o arquivo de destino. O nome do
arquivo de destino pode ser diferente do fonte, desta forma também renomeando
o arquivo.

Ex.: 
dbCopyFile("c:\\Gameprog\\logotipo.jpg", "c:\\gdkTeste\\logo.jpg"; 

---------------------------------------------------------------------------
dbRenameFile (sArquivo, sNomenovo) 
void dbRenameFile ( char* szSourceFilename, char* szNewFilename )
Essa função aplica um nome novo ao arquivo especificado.

Ex.: 
dbRenameFile ("logotipo.jpg", "logo.jpg"); 

---------------------------------------------------------------------------
dbDeleteFile (sArquivo)
void dbDeleteFile ( char* szFilename )
Essa função deleta o arquivo especificado. 

Ex.: 
dbDeleteFile ("logotipo.jpg");	

Como sempre, veja nosso programa exemplo:
// instalador.cpp // Este programa ilustra como criar e deletar diretórios e // copiar, renomear e deletar arquivos #include "DarkGDK.h" // Protótipo das funções void initsys(); // inicializa o sistema void MsgInfo(char *cText); // Mostra uma mensagem na tela void scan_dir03(int nteste); // Testa funções de sistema de arquivos void tst_copiar (int nlinha); // Realiza teste de cópia void tst_renomear(int nlinha); // Realiza teste de renomeação de arquivos void tst_deletar(int nlinha); // Realiza teste de deleção de arquivos // tipo de arquivo #define tipo_arquivo 0 #define tipo_pasta 1 #define tipo_eof -1 // Flag para terminar o programa. 1 = terminar int terminar = 0; // tipo de teste #define const_copiar 1 #define const_renomear 2 #define const_deletar 3 // Elenco de cores #define nBranco 0xFFFFFF // ---------------------------------------------------------------------------- void DarkGDK ( void ) { // Começo da aplicação DarkGdk initsys(); if (dbPathExist("c:\\gdkTeste") == 1) { dbCD("c:\\Gameprog\\gdkMedia\\Instalador"); dbDeleteDirectory("c:\\gdkTeste"); if (dbPathExist("c:\\gdkTeste") == 1) scan_dir03(const_deletar); } // endif dbMakeDirectory("c:\\gdkTeste"); MsgInfo("O diretorio c:\\gdkTeste foi criado. \nConfira a existencia dele."); MsgInfo("Testando copiar"); scan_dir03(const_copiar); MsgInfo("Testando renomear"); scan_dir03(const_renomear); MsgInfo("Testando deletar"); scan_dir03(const_deletar); // Looping principal while ( LoopGDK ( ) ) { if (terminar == 1) break; dbSync ( ); } // fim do while return; } // endfunction DarkGDK() // ---------------------------------------------------------------------------- void initsys() { // Esta função inicializa o sistema dbSyncOn( ); dbCLS ( nBranco); dbInk( 0, nBranco ); dbSetWindowTitle("Instalador.cpp"); dbSetTextOpaque(); } // initsys().fim // ---------------------------------------------------------------------------- void scan_dir03( int nteste) { int ntipo, nlinha; // Legenda dos dados de arquivo dbText (10, 10, "Arquivo"); // Inicia o processo de escaneamento do diretório dbCD("c:\\Gameprog\\gdkMedia\\Instalador"); if (nteste == const_renomear) dbCD("c:\\gdkTeste"); if (nteste == const_deletar) dbCD("c:\\gdkTeste"); dbFindFirst(); ntipo = dbGetFileType(); if (ntipo == tipo_eof) return; nlinha = 60; // Continua o processo de escaneamento do diretório for (;;) { dbFindNext(); ntipo = dbGetFileType(); if (ntipo == tipo_arquivo) { if (nteste == const_copiar) tst_copiar( nlinha); if (nteste == const_renomear) tst_renomear( nlinha); if (nteste == const_deletar) tst_deletar( nlinha); nlinha = nlinha + 20; } // endif if (ntipo == tipo_eof) break; dbSync(); } // endfor if (nteste == const_copiar) MsgInfo("Os arquivos foram copiados! \nVerifique a pasta c:\\gdkTeste"); if (nteste == const_renomear) MsgInfo("Os arquivos foram renomeados!. \nVerifique a pasta c:\\gdkTeste"); if (nteste == const_deletar) { MsgInfo("Os arquivos foram deletados!. \nVerifique a pasta c:\\gdkTeste"); dbCD("c:\\Gameprog\\gdkMedia\\Instalador"); dbDeleteDirectory("c:\\gdkTeste"); MsgInfo("O diretorio c:\\gdkTeste foi deletado. \nConfira isto."); terminar = 1; } // endif } // endfunction scan_dir03() // ---------------------------------------------------------------------------- void tst_copiar(int nlinha) { // Esta função realiza cópia de arquivos char *cArquivo, sinfo[255]; // Obtém detalhes do arquivo cArquivo = dbGetFileName(); // Mostra o nome da pasta ou arquivo dbText (10, nlinha, cArquivo); sprintf(sinfo,"c:\\gdkTeste\\%s",cArquivo); dbCopyFile(cArquivo, sinfo); dbText(300, nlinha, "copiado"); } // endfunction detalhar() // ---------------------------------------------------------------------------- void MsgInfo(char *cText) { MessageBox(0, cText, "Instalador", MB_OK); }// endfuncion MsgInfo // ---------------------------------------------------------------------------- void tst_renomear(int nlinha) { // Essa função renomeia arquivos char *cArquivo; char sinfo[255]; // Obtém detalhes do arquivo cArquivo = dbGetFileName(); // Mostra o nome do arquivo dbText (10, nlinha, cArquivo); sprintf(sinfo,"hackeado-%s",cArquivo); dbRenameFile(cArquivo, sinfo); dbText(300, nlinha, " renomeado "); } // endfunction: renomear // ---------------------------------------------------------------------------- void tst_deletar(int nlinha) { // Essa função deleta arquivos char *cArquivo; // Obtém detalhes do arquivo cArquivo = dbGetFileName(); // Mostra o nome do arquivo dbText (10, nlinha, cArquivo); dbDeleteFile(cArquivo); dbText(300, nlinha, "*** deletado *** "); }// endfunction: deletar()

index << >>


Produzido por Gameprog: Jair Pereira - Setembro/2013 © gameprog.br@gmail.com http://www.gameprog.com.br http://www.nucleoararat.com.br