Copiare ricorsivamente una cartella
Da Gambas-it.org - Wikipedia.
Versione del 10 gen 2022 alle 10:17 di Vuott (Discussione | contributi) (Creata pagina con "La copia ''ricorsiva'' di una Cartella consiste nel copiare ogni contenuto della Cartella medesima; non solo quindi i file presenti, ma anche tutte le sotto-cartelle presenti...")
La copia ricorsiva di una Cartella consiste nel copiare ogni contenuto della Cartella medesima; non solo quindi i file presenti, ma anche tutte le sotto-cartelle presenti a vari sotto-livelli e tutti i file in esse contenuti.
In Gambas non esiste una funzione nativa per ottenere quanto sopra descritto.
Pertanto si dovrà creare un apposito algoritmo funzionale.
Mostriamo un esempio pratico:
Private Const CARTELLA_PRINCIPALE As String = "/percorso/della/cartella/principale/da/copiare/interamente" ' Percorso della cartella ove copiare tutto il contenuto della cartella principale: Private Const CARTELLA_CLONE As String = "/tmp/cartella_clone" Public Sub Main() Dim dr, fl As String ' Crea la nuova Cartella, ove saranno copiate ricorsivamente le eventuali sotto-cartelle e i file della "Cartella principale": Mkdir CARTELLA_CLONE ' Ricerca ricorsivamente nella "Cartella principale", della quale si deve copiare il contenuto: For Each dr In RDir(DOSSIER_PRINCIPAL, Null, gb.Directory) ' Ogni sub-cartella trovata nella "cartella principale" è ricreata (vuota) nella cartella clone: Mkdir DOSSIER_CLONE &/ dr ' Per ciascuna sub-cartella trovata nella "cartella principale", sono identificati i percorsi dei file in essa contenuti: For Each fl In Dir(DOSSIER_PRINCIPAL &/ dr, "*", gb.File) ' ...che vengono copiati nella nuova sotto-cartella della "cartella clone": Copy DOSSIER_PRINCIPAL &/ dr &/ fl To DOSSIER_CLONE &/ dr &/ fl Next Next End