Apúntate...


Consultas, desarrollo de programas y petición de presupuestos:

jueves, 31 de julio de 2014

Funciones para manejar ficheros y directorios

Ficheros y directorios:

Gambas3 contiene una serie de ordenes que nos van a ayudar a manejar archivos y directorios:

Entre ellas:

CHMOD : Cambia el permiso de un archivo, ejemplo: : Chmod "~/Documents" To "rwxr-x---"
COPY : Copia un archivo, ejemplo: COPY User.Home &/ ".config/gambas/gambas.conf" TO "/mnt/save/gambas.conf.save"
Exist : Comprueba si existe un fichero o directorio. Ejemplo: PRINT Exist(user.home & "/gambas.txt")

IsDir : Devuelve si es un directorio la ruta pasada

KILL : Borra un fichero

MKDIR: crea un directorio

MOVE : mueve o cambia de nombre un fichero. Ejemplo: MOVE OldName TO NewName

RMDIR : borra un directorio vacio

Stat : Obtienes información de un fichero:

Temp$ : crea un nombre temporal para un fichero.


Además la clase file, tiene una serie de métodos que devuelven parte del nombre de fichero:

.Name : nombre sin extensión
.Basename : nombre con extensión
.Ext: extensión del fichero
.Dir: directorio del fichero


Exemplo de uso de métodos de file:

Ejemplo de un boton llamado "ButtonDisplayPath", el cual al hacer click sobre el, despliega un cuadro de dialogo para elegir un fichero, y luego nos da los datos del fichero (ruta, nombre, extension)
PUBLIC SUB ButtonDisplayPath_Click()
  IF Dialog.OpenFile() THEN RETURN
  PRINT "Nombre completo del fichero: " & Dialog.Path
  PRINT "Nombre del fichero (con extension) " & File.Name(Dialog.Path)
  PRINT "Nombre del fichero (sin extension): " & File.BaseName(Dialog.Path)
  PRINT "Extension del fichero: " & File.Ext(Dialog.Path)
  PRINT "Directorio del fichero: " & File.Dir(Dialog.Path)
END


Ejemplo de función para copia recursiva de archivos y directorios:
Esta función recursiva, sirve para copiar todos los archivos y carpetas de una carpeta a otra. Tiene un parámetro opcional para seleccionar el tipo de ficheros que queremos copiar:

PUBLIC SUB copia_dir(path_origen AS String, path_destino AS String, OPTIONAL tipo as String)

 DIM arDir AS string[]
 DIM arFile AS string[]
 DIM nombredir, nombrefile AS String

 IF  NOT tipo then tipo="*"
 IF NOT Exist(path_destino) THEN
    MKDIR path_destino
 ENDIF
 arfile = Dir(path_origen, tipo, gb.file)  'extraemos los ficheros
 FOR EACH nombrefile IN arfile  'los copiamos
       COPY path_origen &/ nombrefile TO path_destino &/ nombrefile
 NEXT
 ardir = Dir(path_origen, "*", gb.Directory)
 FOR EACH nombredir IN arDir 'extraemos los subdirectorios
        copia_dir(path_origen &/ nombredir, path_destino &/ nombredir) 'usamos la recursividad
    NEXT
END




Para ampliar más la información:
http://gambaswiki.org/wiki/cat/file?w
http://gambaswiki.org/wiki/comp/gb/file?w
http://gambaswiki.org/wiki/comp/gb/stat


Fuente ejemplo de función recursiva de copia de archivos (autor Shordi)
http://www.gambas-es.org/viewtopic.php?f=5&t=1440&highlight=recursiva+archivos

No hay comentarios:

Publicar un comentario en la entrada

A falta de donativos... un poco de publicidad