Benutzer-Werkzeuge

Webseiten-Werkzeuge


k6:k6.4:start

6.4 Klasse Shell (gb.util)

Die Klasse Shell der Komponente gb.util stellt Ihnen drei statische Methoden zur Verfügung, mit denen Sie Verzeichnisse (rekursiv!) anlegen, löschen oder mit Inhalt verschieben können.

6.4.1 Shell.MkDir

Static Sub Shell.MkDir (sDirPath As String )

Diese Methode erzeugt ein Verzeichnis – mit sDirPath als Verzeichnispfad – und alle seine übergeordneten (Eltern-)Verzeichnisse. Alle Pfade sind stets als absolute Verzeichnispfade anzugeben.

6.4.2 Shell.RmDir

Static Sub Shell.RmDir ( sDirPath As String [ , bForce As Boolean ] )

Entfernt das angegebene Verzeichnis, indem dessen kompletter Inhalt rekursiv entfernt wird und anschließend das Verzeichnis selbst!

  • sDirPath: Pfad des zu entfernenden Verzeichnisses,
  • bForce: Optionaler Parameter

Wenn Force nicht gesetzt ist (Standard), so führt der Versuch, die folgenden Verzeichnisse zu entfernen, zu einem Fehler:

  • Home-Verzeichnis des Benutzers
  • Root-Verzeichnis und jedes Verzeichnis unter dem Root-Verzeichnis (/home, /usr, /etc, …).

6.4.3 Shell.Move

Static Sub Shell.Move( sSource As String, sDestination As String )
  • sSource: Quellpfad,
  • sDestination: Zielpfad

Verschiebt eine Datei oder ein Verzeichnis – mit Inhalt – auch wenn sich Quelle und Ziel auf verschiedenen Geräten befinden.

6.4.4 Projekt

Im vorgestellten Projekt werden alle drei Methoden in vielfältiger Weise eingesetzt.

  • Zuerst wird ein Verzeichnis User.Home &/ „B1_First/B2_Second/B3_Last“ erzeugt, wenn es noch nicht existiert. Dann werden im Verzeichnis B3_Last 10 Text-Dateien mit zufälligen Dateinamen erzeugt, deren Inhalt jeweils aus je zwei Text-Zeilen besteht.
  • Danach wird das Verzeichnis User.Home &/ „Destination“ erzeugt, wenn es noch nicht existiert.
  • Anschließend wird das Verzeichnis User.Home &/ „B1_First/B2_Second/B3_Last“ mit Inhalt (!) in das Verzeichnis User.Home &/ „Destination“ verschoben.
  • Abschließend können Sie alle angelegten Verzeichnisse (rekursiv) und deren Inhalt löschen.

B1

Abbildung 6.4.4.1: Verzeichnis B3_Last mit 10 Text-Dateien wurde erzeugt

B2

Abbildung 6.4.4.2: Das Verzeichnis B3_Last wurde mit Inhalt verschoben

B3

Abbildung 6.4.4.3: Alle angelegten Verzeichnisse wurden erfolgreich gelöscht

Der Quelltext wird vollständig angegeben und anschließend kommentiert:

[1] ' Gambas class file
[2] 
[3] Public Sub Form_Open()
[4]   FMain.Resizable = False
[5] End
[6] 
[7] Public Sub btnShellMkDir_Click()
[8] 
[9]   Dim sPath As String
[10]   
[11]   sPath = User.Home &/ "B1_First/B2_Second/B3_Last"
[12]   
[13]   If Not Exist(sPath) Then ' Query NOT required
[14]      Shell.MkDir(sPath)
[15]   Endif
[16]   
[17]   CreateTextFiles(sPath, 10)
[18]   DirChooser1.ShowFile = True
[19]   DirChooser1.ShowDetailed = True
[20]   DirChooser1.Reload()
[21]   DirChooser1.SelectedPath = sPath
[22] 
[23] End
[24] 
[25] Public Sub btnShellMove_Click()
[26] 
[27]   Dim sMessage As String
[28] 
[29]   If Not Exist(User.Home &/ "Destination") Then
[30]      Shell.MkDir(User.Home &/ "Destination")
[31]   Endif
[32]   Try Shell.Move(User.Home &/ "B1_First/B2_Second/B3_Last", User.Home &/ "Destination")
[33] ' Try Shell.Move(User.Home &/ "B1_First/B2_Second", User.Home &/ "Destination")
[34]   If Error Then
[35]      sMessage = ("Error moving the specified directory!")
[36]      sMessage &= gb.NewLine & Error.Text & "."
[37]      sMessage &= gb.NewLine & "Error-Code = " & Error.Code
[38]      Message.Error(sMessage)
[39]      Shell.RmDir(User.Home &/ "Destination")
[40]      Return
[41]   Endif
[42]   DirChooser1.ShowFile = True
[43]   DirChooser1.ShowDetailed = True 
[44]   DirChooser1.Reload()    
[45]   DirChooser1.SelectedPath = User.Home &/ "Destination/B3_Last"
[46] ' DirChooser1.SelectedPath = User.Home &/ "Destination/B2_Second/B3_Last"
[47] 
[48] End
[49] 
[50] Public Sub btnShellRmDir_Click()
[51] 
[52]   If Exist(User.Home &/ "B1_First") Then
[53]      Try Shell.RmDir(User.Home &/ "B1_First")
[54]      If Error Then
[55]         Message.Error("Deleting the specified directory resulted in an error!")
[56]      Endif
[57]   Endif
[58]   
[59]   If Exist(User.Home &/ "Destination") Then
[60]      Try Shell.RmDir(User.Home &/ "Destination")
[61]      If Error Then
[62]         Message.Error("Deleting the specified directory resulted in an error!")
[63]      Endif
[64]   Endif  
[65] 
[66]   DirChooser1.Reload()
[67]   DirChooser1.ShowFile = False
[68]   DirChooser1.ShowDetailed = False
[69] 
[70] End
[71] 
[72] Private Sub CreateTextFiles(sPathDir As String, iNumber As String)
[73]   
[74]   Dim sFileName As String
[75]   Dim i As Integer
[76]   
[77]    For i = 1 To iNumber
[78]     sFileName = Hex$(Rand(0, 2 ^ 32 - 1)) ' Random file name
[79]     If Not Exist(sPathDir &/ sFileName & ".txt") Then
[80]        File.Save(sPathDir &/ sFileName & ".txt", "Text line 1.\nText line 2.")
[81]     Endif
[82]   Next
[83]     
[84] End

Kommentar:

  • In der Zeile 11 wird der Pfad für den zu erzeugenden Verzeichnis-Baum angegeben. Das Basis-Verzeichnis ist B1_First.
  • In der Zeile 14 wird der Verzeichnis-Baum angelegt – den man in der Abbildung 6.4.4.1 sehen kann. Eine Abfrage, ob der Verzeichnis-Baum bereits existiert wäre nicht notwendig, weil sie von der Methode intern vorgenommen wird. Das wurde allerdings erst später erkannt.
  • Anschließend werden im Ziel-Verzeichnis 10 Text-Dateien erzeugt, die in in einer zugeschalteten erweiterten Detail-Ansicht im DirChooser angezeigt werden.
  • In den Zeilen 29 bis 31 wird zuerst geprüft, ob das angegebene Verzeichnis existiert. Wenn es nicht existiert, dann wird das Ziel-Verzeichnis „Destination“ erzeugt.
  • In der Zeile 32 wird das Verzeichnis B3_Last mit den 10 Dateien in das Ziel-Verzeichnis verschoben, wie man der Abbildung 6.4.4.2 entnehmen kann.
  • In den Zeilen 50 bis 70 werden alle zur Laufzeit angelegten Verzeichnis-Bäume gelöscht.
  • Das Verschieben erzeugt einen Fehler, wenn zum Beispiel die beteiligten Dateien oder Verzeichnisse nicht existieren:

B4

Abbildung 6.4.4.4: Fehler beim Verschieben

Download

Die Website verwendet zwei temporäre Session-Cookies. Diese technisch notwendigen Cookies werden gelöscht, wenn der Web-Browser geschlossen wird! Informationen zu Cookies erhalten Sie in der Datenschutzerklärung.
k6/k6.4/start.txt · Zuletzt geändert: 24.09.2018 (Externe Bearbeitung)

Seiten-Werkzeuge