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.
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.
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!
Wenn Force nicht gesetzt ist (Standard), so führt der Versuch, die folgenden Verzeichnisse zu entfernen, zu einem Fehler:
Static Sub Shell.Move( sSource As String, sDestination As String )
Verschiebt eine Datei oder ein Verzeichnis – mit Inhalt – auch wenn sich Quelle und Ziel auf verschiedenen Geräten befinden.
Im vorgestellten Projekt werden alle drei Methoden in vielfältiger Weise eingesetzt.
Abbildung 6.4.4.1: Verzeichnis B3_Last mit 10 Text-Dateien wurde erzeugt
Abbildung 6.4.4.2: Das Verzeichnis B3_Last wurde mit Inhalt verschoben
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:
Abbildung 6.4.4.4: Fehler beim Verschieben