Differenze tra le versioni di "Verificare l'esistenza di una directory"
Riga 1: | Riga 1: | ||
− | Per verificare se una ''Directory'' esiste, si possono adottare | + | Per verificare se una ''Directory'' esiste, si possono adottare alcune modalità. |
− | |||
==Uso delle risorse di Gambas== | ==Uso delle risorse di Gambas== | ||
− | Si può utilizzare la funzione | + | Si può utilizzare la funzione "Exist()", la quale ritorna ''vero'' se il file o la cartella, indicati nel suo parametro, sono esistenti. |
Esempio pratico: | Esempio pratico: | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
− | + | Dim ris, cartella As String | |
cartella = "/tmp" | cartella = "/tmp" | ||
− | If Exist(cartella) | + | If Not Exist(cartella) Then ris = " non" |
Print "La Directory "; cartella; ris; " esiste !" | Print "La Directory "; cartella; ris; " esiste !" | ||
'''End''' | '''End''' | ||
− | + | Si può utilizzare anche la funzione "IsDir()". | |
− | + | <BR>Se il file con il nome del percorso non esite, o se il file non è una directory, allora la funzione "IsDir()" restituisce ''Falso''. | |
− | Si può utilizzare anche la funzione " | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
− | + | Dim ris, cartella As String | |
cartella = "/tmp" | cartella = "/tmp" | ||
− | If IsDir(cartella) | + | If Not IsDir(cartella) Then ris = " non" |
Print "Il percorso "; cartella; ris; " è una Directory !" | Print "Il percorso "; cartella; ris; " è una Directory !" | ||
Riga 45: | Riga 43: | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
− | + | Dim cartella As String | |
− | + | Dim drc As Pointer | |
− | + | ||
− | cartella = "/ | + | cartella = "<FONT Color=gray>''/cartella/da/verificare''</font>" |
drc = opendir(cartella) | drc = opendir(cartella) | ||
Riga 56: | Riga 54: | ||
− | ==Uso della funzione esterna | + | ==Uso della funzione esterna "stat()"== |
− | Un'altra modalità prevede l'uso della funzione esterna " | + | Un'altra modalità prevede l'uso della funzione esterna "stat()", dichiarata nel file header "''/usr/include/x86_64-linux-gnu/sys/stat.h'' ". |
− | |||
− | |||
+ | Per utilizzare la funzione esterna "stat()", bisognerà attenersi in Gambas strettamente a quanto già precisato nella pagina di questa Wiki: [[Stat_()|stat ()]]. | ||
Mostriamo un esempio pratico per verificare l'esistenza di una Directory: | Mostriamo un esempio pratico per verificare l'esistenza di una Directory: | ||
Riga 96: | Riga 93: | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
− | + | Dim i As Integer | |
− | + | Dim st As New stat_ | |
− | + | Dim percorso, s As String | |
− | + | ||
percorso = "<FONT Color=gray>''/cartella/da/verificare''</font>" | percorso = "<FONT Color=gray>''/cartella/da/verificare''</font>" | ||
Versione delle 18:01, 31 ago 2022
Per verificare se una Directory esiste, si possono adottare alcune modalità.
Uso delle risorse di Gambas
Si può utilizzare la funzione "Exist()", la quale ritorna vero se il file o la cartella, indicati nel suo parametro, sono esistenti.
Esempio pratico:
Public Sub Main() Dim ris, cartella As String cartella = "/tmp" If Not Exist(cartella) Then ris = " non" Print "La Directory "; cartella; ris; " esiste !" End
Si può utilizzare anche la funzione "IsDir()".
Se il file con il nome del percorso non esite, o se il file non è una directory, allora la funzione "IsDir()" restituisce Falso.
Public Sub Main() Dim ris, cartella As String cartella = "/tmp" If Not IsDir(cartella) Then ris = " non" Print "Il percorso "; cartella; ris; " è una Directory !" End
Uso della funzione esterna opendir( )
Un'altra modalità prevede l'uso della funzione esterna "opendir( )", dichiarata nel file header "/usr/include/dirent.h". Tale funzione esterna restituisce un Puntatore valido, se non ha riscontrato errori nel tentativo di accesso alla Dyrectory impostata, altrimenti ritorna NULL, che in Gambas corrisponde, come valore predefinito di una variabile di tipo Puntatore, allo zero (0).
Library "libc:6" ' DIR *opendir (const char *__name) ' Open a directory stream on NAME. Private Extern opendir(name As String) As Pointer Public Sub Main() Dim cartella As String Dim drc As Pointer cartella = "/cartella/da/verificare" drc = opendir(cartella) If drc == 0 Then Error.Raise("Directory inesistente !") End
Uso della funzione esterna "stat()"
Un'altra modalità prevede l'uso della funzione esterna "stat()", dichiarata nel file header "/usr/include/x86_64-linux-gnu/sys/stat.h ".
Per utilizzare la funzione esterna "stat()", bisognerà attenersi in Gambas strettamente a quanto già precisato nella pagina di questa Wiki: stat ().
Mostriamo un esempio pratico per verificare l'esistenza di una Directory:
Library "libc:6" Public Struct stat_ st_dev As Long st_ino As Long st_nlink As Long st_mode As Integer st_uid As Integer st_gid As Integer __pad0 As Integer st_rdev As Long st_size As Long st_blksize As Long st_blocks As Long st_atime As Long st_atimensec As Long st_mtime As Long st_mtimensec As Long st_ctime As Long st_ctimensec As Long __glibc_reserved[3] As Long End Struct Private Const _STAT_VER_LINUX as Integer = 1 Private Const S_IFDIR As Integer = 16384 ' int __xstat (_STAT_VER, __path, __statbuf) ' Get file attributes for FILE and put them in BUF. Private Extern __xstat(_STAT_VER As Integer, __path As String, __statbuf As stat_) As Integer Public Sub Main() Dim i As Integer Dim st As New stat_ Dim percorso, s As String percorso = "/cartella/da/verificare" i = __xstat(_STAT_VER_LINUX, percorso, st) If i < 0 Then Error.Raise("Percorso inesistente !") If st.st_mode And S_IFDIR Then Print percorso; " è una Directory." End