Conoscere il contenuto di una pen-drive mediante le sole risorse di Gambas

Da Gambas-it.org - Wikipedia.

Il contenuto di una pen-drive, inserita nella porta USB e montata dal sistema operativo, è visibile agevolmente nel percorso:

"/media" &/ User.Name &/ "nome_della_cartella_condivisa_della_pen-drive" [Nota 1]

Ciò significa che all'interno di questa cartella condivisa della pen-drive è possibile vedere e richiamare utilmente il suo contenuto (sub-cartelle e file).

Così, se ad esempio il nome della cartella condivisa della nostra pen-drive fosse "40BA-E18A", per vedere e gestire tutto ciò che è contenuto nella nostra pen-drive USB inserita, dovremo semplicemente aprire la predetta cartella condivisa e vedere il suo contenuto.

In Gambas possiamo scrivere un codice simile al seguente:

Public Sub Main()
 
 Dim mounts, s, tp As String
 Dim ss, dv As String[]
 
' Carica il file contenente tutti i dispositivi montati dal S.O.:
  mounts = File.Load("/proc/self/mounts")
   
' Il contenuto testuale del file caricato viene suddiviso in righe:
  ss = Split(mounts, "\n")
  
  Print "File device presenti:"
  
  For Each s In ss
' Vengono prese in considerazione solo le righe che iniziano per "/dev/":
    If s Begins "/dev/" Then
' Viene presa solo la parte che potenzialmente si riferisce al nome della cartella condivisa della nostra pen-drive:
      dv = Scan(s, "* * *")
      Print dv[0] & Chr(32) & dv[1]
' Individua e raccoglie la parte relativa al nome della cartella condivisa della nostra pen-drive:
      If InStr(dv[1], "-") Then
        Print "\nFile e cartelle presenti nel dispositivo '"; dv[1]; "':"
        For Each s In Dir(dv[1], Null, 0)
          Select Case Stat(dv[1] &/ s).Type
            Case gb.File
              tp = "File     "
            Case gb.Directory
              tp = "Directory"
            Case gb.Device
              tp = "Device   "
           Case gb.Pipe
             tp = "Pipe      "
           Case gb.Socket
             tp = "Socket    "
           Case gb.Link
             tp = "Link      "
          End Select
          Print "  "; tp, s
        Next
      Endif
    Endif
  Next
     
End



Note

[1] Questo percorso è testato almeno per la distribuzione Linux Mint.