Differenze tra le versioni di "Spostare un file nel Cestino e ripristinarlo nella sua Cartella di origine"

Da Gambas-it.org - Wikipedia.
 
(23 versioni intermedie di uno stesso utente non sono mostrate)
Riga 6: Riga 6:
 
In Gambas possiamo spostare un file nel Cestino e, volendo, ripristinarlo nella sua Cartella di origine, usando l'istruzione "[[Move|MOVE]]".
 
In Gambas possiamo spostare un file nel Cestino e, volendo, ripristinarlo nella sua Cartella di origine, usando l'istruzione "[[Move|MOVE]]".
  
Va considerato che, se un file, cestinato, possiede il medesimo nome di un file già presente nella Cartella User.Home &/ ".local/share/Trash/files", il sistema crea nella predetta Cartella un file con nome identico a quello già presente nella Cartella, aggiungendo però il suffisso ".n"; laddove "n" è un numero progressivo, considerando "1" il file preesistente.
+
Mostriamo un semplice esempio pratico e didattico, nel quale cliccando su un ''ToggleButton'' si cestinerà un file presente nella Cartella "Scrivania"; cliccando nuovamente il file sarà ripristinato nella sua Cartella di origine ("Scrivania"):
<BR>Così, per esempio, se già avessimo nella Cartella User.Home &/ ".local/share/Trash/files" un file chiamato "nomefile", e, avendo creato altrove un file con il medesimo nome "nomefile", lo cestinassimo, il sistema ''sposterebbe'' tale file nella Cartella User.Home &/ ".local/share/Trash/files" rinominandolo "''nomefile'''.2''''' ".
+
Private Const NOME_FILE As String = "nome_file" <FONT Color=gray>' ''Il nome di un file da cestinare''</font>
<BR>Ugualmente, se creassimo un ulteriore file avente nome "nomefile" e poi lo cestinassimo, avremmo nella Cartella User.Home &/ ".local/share/Trash/files" il file "nomefile.3" e così via.
+
<BR>Va fatto notare e va evidenziato che, tenuto conto del protocollo di spostamento dei file nel cestino - ossia nella Cartella User.Home &/ ".local/share/Trash/files" -, il sistema, qualora trovi in tale Cartella già un file avente il medesimo nome del file che si sta spostando (cestinando), <U>aggiunge sempre</u> il suffisso ".n" al file che viene spostano nella predetta Cartella User.Home &/ ".local/share/Trash/files".
+
<BR>Così, se nella Cartella User.Home &/ ".local/share/Trash/files" esistesse già un file chiamato "nomefile.2" (perché magari aveva in origine un nome doppione di un file che lì già era stato spostato), e se noi, avendo creato un file con il nome "nomefile.2", cestinassimo tale file, il sistema, trovando nella Cartella User.Home &/ ".local/share/Trash/files" il file preesistente con uguale nome (''nomefile.2'' ), sposterebbe il nostro nuovo ultimo file nella Cartella User.Home &/ ".local/share/Trash/files" rinominandolo con l'aggiunta del suffisso ".n", in questo caso: ''nomefile.2'''.2'''''
 
 
 
Mostriamo un esempio pratico, nel quale cliccando su un ''ToggleButton'' si cestinerà un file presente nella Cartella "Scrivania"; cliccando nuovamente il file sarà ripristinato nella sua Cartella di origine ("Scrivania"):
 
 
  Public Sub ToggleButton1_Click()
 
  Public Sub ToggleButton1_Click()
 
   
 
   
   If ToggleButton1.Value Then
+
   Dim s, scrivania, trashfile, trashinfo As String
    Move User.Home &/ "Scrivania/<FONT Color=gray>nome_file</font>" To User.Home &/ ".local/share/Trash/files" &/ File.Name(User.Home &/ "Scrivania/<FONT Color=gray>nome_file</font>")
+
 
 +
  <FONT Color=green>scrivania</font> = User.Home &/ "Scrivania" &/ NOME_FILE
 +
  <FONT Color=red>trashfile</font> = User.Home &/ ".local/share/Trash/files"
 +
  <FONT Color=blue>trashinfo</font> = User.Home &/ ".local/share/Trash/info"
 +
 +
  If ToggleButton1.Value Then
 +
<FONT Color=gray>' ''Prepara il contenuto del file che sarà creato nella Cartella ".local/share/Trash/info", collegato al file originale cestinato:''</font>
 +
    s = "[Trash Info]" &
 +
        "\nPath=" & <FONT Color=green>scrivania</font> &
 +
        "\nDeletionDate=" & Format(Now, "yyyy-mm-ddThh:nn:ss")
 +
    If Not Exist(<FONT Color=red>trashfile</font> &/ File.Name(<FONT Color=green>scrivania</font>)) Then
 +
<FONT Color=gray>' ''Il file, da cestinare, viene spostato nella Cartella User.Home &/ ".local/share/Trash/files":''</font>
 +
      Move <FONT Color=green>scrivania</font> To <FONT Color=red>trashfile</font> &/ NOME_FILE
 +
<FONT Color=gray>' ''Crea nella Cartella User.Home &/ ".local/share/Trash/info" il file collegato al file originale cestinato:''</font>
 +
      File.Save(<FONT Color=blue>trashinfo</font> &/ NOME_FILE & ".trashinfo", s)
 +
    Endif
 
   Else
 
   Else
     Move User.Home &/ ".local/share/Trash/files/<FONT Color=gray>nome_file</font>" To User.Home &/ "Scrivania/<FONT Color=gray>nome_file</font>"
+
<FONT Color=gray>' ''Ripristina il file cestinato nella sua Cartella originaria (in questo esempio: la "Scrivania"):''</font>
 +
     Move <FONT Color=red>trashfile</font> &/ NOME_FILE To <FONT Color=green>scrivania</font>
 +
<FONT Color=gray>' ''Contestualmente distrugge, poiché ormai inutile, il file che fu creato nella ".local/share/Trash/files", collegato al file ora ripristinato:''</font>
 +
    Kill <FONT Color=blue>trashinfo</font> &/ NOME_FILE & ".trashinfo"
 
   Endif
 
   Endif
 
   
 
   
 
  End
 
  End
 +
 +
===Cestinare un file avente lo stesso nome di un file già presente nella Cartella User.Home &/ ".local/share/Trash/files"===
 +
Va considerato che, se un file, cestinato, possiede il medesimo nome di un file già presente nella Cartella User.Home &/ ".local/share/Trash/files", il sistema crea nella predetta Cartella un file con nome identico a quello già presente nella Cartella, aggiungendo però il suffisso ".<FONT Color=red>n</font>"; laddove "n" è un numero progressivo, considerando "1" il file preesistente.
 +
<BR>Così, per esempio, se già avessimo nella Cartella User.Home &/ ".local/share/Trash/files" un file chiamato "nomefile", e, avendo creato altrove un file con il medesimo nome "nomefile", lo cestinassimo, il sistema ''sposterebbe'' tale file nella Cartella User.Home &/ ".local/share/Trash/files" rinominandolo "''nomefile'''.2''''' ".
 +
<BR>Ugualmente, se creassimo un ulteriore file avente nome "nomefile" e poi lo cestinassimo, avremmo nella Cartella User.Home &/ ".local/share/Trash/files" il file "nomefile.3" e così via.
 +
<BR>Va fatto notare e va evidenziato che, tenuto conto del protocollo di spostamento dei file nel cestino - ossia nella Cartella User.Home &/ ".local/share/Trash/files" -, il sistema, qualora trovi in tale Cartella già un file avente il medesimo nome del file che si sta spostando (cestinando), <U>aggiunge sempre</u> il suffisso ".n" al file che viene spostano nella predetta Cartella User.Home &/ ".local/share/Trash/files".
 +
<BR>Così, se nella Cartella User.Home &/ ".local/share/Trash/files" esistesse già un file chiamato "nomefile.2" (perché magari aveva in origine un nome doppione di un file che lì già era stato spostato), e se noi, avendo creato un file con il nome "nomefile.2", cestinassimo tale file, il sistema, trovando nella Cartella User.Home &/ ".local/share/Trash/files" il file preesistente con uguale nome (''nomefile.2'' ), sposterebbe il nostro nuovo ultimo file nella Cartella User.Home &/ ".local/share/Trash/files" rinominandolo con l'aggiunta del suffisso ".n", in questo caso: ''nomefile.2'''.2'''''
 +
<BR>Se il file contiene nel suo nome uno o più punti, il sistema imposta il suffisso numerico progressivo <U>dopo il primo punto</u>.
 +
<BR>Se il nome del file termina con un punto, allora il sistema aggiunge al punto finale soltanto un'altro punto. Ai file cestinati successivamente viene aggiunto il suffisso numerico progressivo <U>dopo il secondo punto</u>.

Versione attuale delle 16:27, 22 ago 2024

I file cancellati sono spostati momentaneamente nel cosiddetto "Cestino" (Trash ).

Più precisamente essi vengono spostati nella Cartella del percorso nascosto ".local/share/Trash/files".
Inoltre, viene creato nella cartella ".local/share/Trash/info" un file che riporta alcune informazioni sul file cestinato.

In Gambas possiamo spostare un file nel Cestino e, volendo, ripristinarlo nella sua Cartella di origine, usando l'istruzione "MOVE".

Mostriamo un semplice esempio pratico e didattico, nel quale cliccando su un ToggleButton si cestinerà un file presente nella Cartella "Scrivania"; cliccando nuovamente il file sarà ripristinato nella sua Cartella di origine ("Scrivania"):

Private Const NOME_FILE As String = "nome_file" ' Il nome di un file da cestinare


Public Sub ToggleButton1_Click()

 Dim s, scrivania, trashfile, trashinfo As String
 
 scrivania = User.Home &/ "Scrivania" &/ NOME_FILE
 trashfile = User.Home &/ ".local/share/Trash/files"
 trashinfo = User.Home &/ ".local/share/Trash/info"

 If ToggleButton1.Value Then
' Prepara il contenuto del file che sarà creato nella Cartella ".local/share/Trash/info", collegato al file originale cestinato:
   s = "[Trash Info]" &
       "\nPath=" & scrivania &
       "\nDeletionDate=" & Format(Now, "yyyy-mm-ddThh:nn:ss")
   If Not Exist(trashfile &/ File.Name(scrivania)) Then
' Il file, da cestinare, viene spostato nella Cartella User.Home &/ ".local/share/Trash/files":
     Move scrivania To trashfile &/ NOME_FILE
' Crea nella Cartella User.Home &/ ".local/share/Trash/info" il file collegato al file originale cestinato:
     File.Save(trashinfo &/ NOME_FILE & ".trashinfo", s)
   Endif
 Else
' Ripristina il file cestinato nella sua Cartella originaria (in questo esempio: la "Scrivania"):
   Move trashfile &/ NOME_FILE To scrivania
' Contestualmente distrugge, poiché ormai inutile, il file che fu creato nella ".local/share/Trash/files", collegato al file ora ripristinato:
   Kill trashinfo &/ NOME_FILE & ".trashinfo"
 Endif

End

Cestinare un file avente lo stesso nome di un file già presente nella Cartella User.Home &/ ".local/share/Trash/files"

Va considerato che, se un file, cestinato, possiede il medesimo nome di un file già presente nella Cartella User.Home &/ ".local/share/Trash/files", il sistema crea nella predetta Cartella un file con nome identico a quello già presente nella Cartella, aggiungendo però il suffisso ".n"; laddove "n" è un numero progressivo, considerando "1" il file preesistente.
Così, per esempio, se già avessimo nella Cartella User.Home &/ ".local/share/Trash/files" un file chiamato "nomefile", e, avendo creato altrove un file con il medesimo nome "nomefile", lo cestinassimo, il sistema sposterebbe tale file nella Cartella User.Home &/ ".local/share/Trash/files" rinominandolo "nomefile.2 ".
Ugualmente, se creassimo un ulteriore file avente nome "nomefile" e poi lo cestinassimo, avremmo nella Cartella User.Home &/ ".local/share/Trash/files" il file "nomefile.3" e così via.
Va fatto notare e va evidenziato che, tenuto conto del protocollo di spostamento dei file nel cestino - ossia nella Cartella User.Home &/ ".local/share/Trash/files" -, il sistema, qualora trovi in tale Cartella già un file avente il medesimo nome del file che si sta spostando (cestinando), aggiunge sempre il suffisso ".n" al file che viene spostano nella predetta Cartella User.Home &/ ".local/share/Trash/files".
Così, se nella Cartella User.Home &/ ".local/share/Trash/files" esistesse già un file chiamato "nomefile.2" (perché magari aveva in origine un nome doppione di un file che lì già era stato spostato), e se noi, avendo creato un file con il nome "nomefile.2", cestinassimo tale file, il sistema, trovando nella Cartella User.Home &/ ".local/share/Trash/files" il file preesistente con uguale nome (nomefile.2 ), sposterebbe il nostro nuovo ultimo file nella Cartella User.Home &/ ".local/share/Trash/files" rinominandolo con l'aggiunta del suffisso ".n", in questo caso: nomefile.2.2
Se il file contiene nel suo nome uno o più punti, il sistema imposta il suffisso numerico progressivo dopo il primo punto.
Se il nome del file termina con un punto, allora il sistema aggiunge al punto finale soltanto un'altro punto. Ai file cestinati successivamente viene aggiunto il suffisso numerico progressivo dopo il secondo punto.