Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    338

    algoritmo per esplorazione file system

    cerco un algoritmo per l'esplorazione del file system a partire da una cartella, da implementare in c# per realizzare un toolettino (visto che non ho trovato nulla di già pronto) per analizzare il file system e scovare i file con nome troppo lungo che mi creano problemi in fase di manutenzione di un file server Windows 2003.

    grazie

  2. #2
    Non so se ti è di aiuto, cmq posto il codice di un programmino che fa il tree del "file system":
    codice:
    //
    //   DirWalk.C
    //
    //   By Ciro Sisman Pereira
    //      CiroSP@aol.com
    //
    
    
    #include <windows.h>
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    void fDirWalk(char *);
    void displayTree(int, char *);
    
    //------------------------------------------------
    void main( int pcount, char *ptext[] )
    //------------------------------------------------
    {
    
       if ( pcount < 2 )
       {
         printf("\\");
         fDirWalk( "\\" );
       }
       else
       {
         printf(ptext[1]);
         fDirWalk( ptext[1] );
       }
    
    }
    
    //------------------------------------------------
    void fDirWalk(char *_current)
    //------------------------------------------------
    {
        char            DirName[MAX_PATH];
        HANDLE          Hnd;
        WIN32_FIND_DATA WFD;
        static int _dlevel = 0;
    
    //  Set the new current directory
        SetCurrentDirectory( _current );
    
    //  Starts the search
        Hnd = FindFirstFile( "*.*", &WFD );
    
    //  loop to get all inside the current directory
        while ( FindNextFile( Hnd, &WFD ) )
        {
    //    If it is a real directory
          if (
               ( WFD.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) &&
               ( strcmp(WFD.cFileName, "..") && strcmp(WFD.cFileName, ".") )
             )
          {
    //       Get the current directory
             GetCurrentDirectory( MAX_PATH, DirName );
    
    //       Put a "\" if necessary
             if ( strncmp( &DirName[strlen(DirName)-1], "\\", 1 ) )
               (void) strcat( DirName, "\\" );
    
    //       Create a new path
             (void) strcat( DirName, WFD.cFileName );
    
    //       Add 1 to level counter
             _dlevel++;
    
    //       Show the new directory
             displayTree( _dlevel, WFD.cFileName );
    
    //       Make a new call to itself
             fDirWalk( DirName );
    
    //       Go back one level
             SetCurrentDirectory( ".." );
    
    //       Subtracts 1 to level counter
             _dlevel--;
          }
    
        } // End while
    
    // End the search to this call
       (void) FindClose( Hnd );
       return;
    }
    
    //------------------------------------------------
    void displayTree(int _dnumber, char *_dname)
    //------------------------------------------------
    {
    	char _txt[128];
    	int  _c = 0;
    
       (void) memset( _txt, 0x00, sizeof(_txt) );
       (void) memset( _txt, ' ', _dnumber * 3 );
    
       for ( _c = 0; _c < _dnumber * 3; _c+=3 )
    	   _txt[_c] = '|';
    
       _txt[_c-1] = _txt[_c-2] = '_';
    
    	printf("\n%s%s", _txt, _dname );
    	fflush(stdout);
    }
    Puoi prendere spunto (sebbene sia scritto in c)
    Experience is what you get when you don’t get what you want

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    C# e tutti i linguaggi della famiglia .NET vengono trattati nell'apposito Sub-Forum.

    Ti sposto.


    PS: Il linguaggio va specificato obbligatoriamente anche nel titolo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Se ti può interessare in passato ho scritto un componente in C# che consente di cercare file in base ad una regex (tramite la quale puoi anche individuare i file con il nome troppo lungo)... se ti può servire questo zip ne contiene i sorgenti, i binari e un'applicazione di esempio (anche qui, sorgenti e binari) che ti consente di usarne quasi tutte le feature (si tratta, in sostanza, di un'alternativa alla funzione "Trova" di Windows che consente di usare le regex per la ricerca).
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    338
    ok, grazie ad entrambi, proverò a combinare qcosa..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.