DoTheWorld - Biblioteca completa para manipulação de Arquivos e Pastas em C

Neste artigo você irá aprender a fazer manipulação de arquivos e pastas em C de maneira fácil e intuitiva, através da biblioteca DoTheWorld.

[ Hits: 5.688 ]

Por: Mateus Moutinho em 19/01/2024


Trees (árvores de arquivos)



Com árvores você pode fazer operaçoes em pastas, extremamente complexas ,variando desde a listagem , mapeamentos, movimentações, etc. Neste exemplo eu listo uma árvore, seleciono todos os arquivos com extensão .c e, através do método DtwTreePart_hardware_write, eu gero uma ordem de escrita, para assim copiar da pasta original e escrever o resultado na pasta "exemples2" (definida na função DtwPath_set_dir):

#include "doTheWorld.h"

int main(){ 
  //copia arquivos


  DtwTree *arvore = newDtwTree();
  DtwTreeProps props ={
    .content = DTW_INCLUDE,
    .content_data  = DTW_INCLUDE,
    .minification = DTW_MIMIFY,
    .path_atributes  = DTW_INCLUDE
  };


  DtwTree_add_tree_from_hardware(arvore,"exemples",&props);
  for(int i = 0; i < arvore->size; i++){
    
    DtwTreePart * part = arvore->tree_parts[i];
    DtwPath *caminho = part->path;
    char *extensao = DtwPath_get_extension(caminho);
    
    if(!extensao) continue;

    if(strcmp(extensao,"c") == 0){

      DtwPath_set_dir(caminho,"exemples2");
      printf("ira copiar para para %s\n", DtwPath_get_path(caminho));
      DtwTreePart_hardware_write(part,DTW_SET_AS_ACTION);      
    }

  }

  DtwTree_hardware_commit_tree(arvore);
  DtwTree_free(arvore);

  return 0;
}


Também é possível fazer deleções e modificações arquivos e sub pastas , através dos métodos DtwTreePart_hardware_remove e DtwTreePart_hardware_modify

Exemplo de deleção de todos os arquivos com extensão .c
#include "doTheWorld.h"

int main(){ 
  //copia arquivos


  DtwTree *arvore = newDtwTree();
  DtwTreeProps props ={
    .content = DTW_INCLUDE,
    .content_data  = DTW_INCLUDE,
    .minification = DTW_MIMIFY,
    .path_atributes  = DTW_INCLUDE
  };

 DtwTree_add_tree_from_hardware(arvore,"exemples",&props);
  for(int i = 0; i < arvore->size; i++){
    
    DtwTreePart * part = arvore->tree_parts[i];
    DtwPath *caminho = part->path;
    char *extensao = DtwPath_get_extension(caminho);
    
    if(!extensao) continue;
  
    if(strcmp(extensao,"c") == 0){
      printf("ira remover para para %s\n", DtwPath_get_path(caminho));
      DtwTreePart_hardware_remove(part,DTW_SET_AS_ACTION);      
    }
  } 

  DtwTree_hardware_commit_tree(arvore);
  DtwTree_free(arvore);

  return 0;
}



Página anterior     Próxima página

Páginas do artigo
   1. Instalação
   2. Leitura de Arquivos
   3. Escrita de Arquivos
   4. Copiando, movendo e removendo qualquer coisa
   5. Lidando com Base64
   6. Lidando com Hashs
   7. Listagem de Arquivos e Pastas
   8. Trees (árvores de arquivos)
   9. Transactions
Outros artigos deste autor

Guia de Programação em C/GTK 2 - Construindo uma Calculadora Completa

Leitura recomendada

Manipulando arquivos em C (parte 1)

Manipulação de arquivos em C++

Manipulação de imagens no formato PPM

Manipulando arquivos em C (parte 2)

Ensaio acerca de bibliotecas de código aberto para abstração de acesso a banco de dados em linguagem C++

  
Comentários
[1] Comentário enviado por maurixnovatrento em 20/01/2024 - 14:32h


Biblioteca muito interessante.

___________________________________________________________
Meu Canal: https://www.youtube.com/@LinuxDicasPro
https://github.com/mxnt10

[2] Comentário enviado por mateusmoutinho em 21/01/2024 - 14:47h


Opa vlw man muiito obrigado, depois vou dar uma olhada no seu canal


Contribuir com comentário