In diesem Workshop erfahren Sie, wie Sie mit Hilfe des .NET Framework Operationen durchführen. Dazu zählen neben dem Anlegen, Kopieren, Verschieben und Löschen von Dateien und Ordnern, auch das Sammeln von Informationen sowie das Schreiben und Lesen von Dateien. Einführung Das .NET Framework stellt viele Klassen zur Bearbeitung von Dateien und Ordnern im Namespace System.IO bereit. Um sich das Arbeiten mit Dateien und Ordnern in .NET etwas angenehmer zu gestalten, importiert man den Namespace System.IO mittels Imports. Die Existenz von Laufwerken, Ordnern oder Dateien prüfen ' Existenz eines Laufwerks prüfen Dim bDriveExists As Boolean bDriveExists = Directonary.Exists("G:") ' Existenz eines Ordners prüfen Dim bDirectoryExists As Boolean bDirectoryExists = Directonary.Exists("G:\Temp") ' Existenz einer Datei prüfen Dim bFileExists As Boolean bFileExists = File.Exists("G:\Temp\Testfile.txt") Die Exists-Methode der Directory- oder File-Klasse geben entweder True (existiert) oder False (existiert nicht) zurück. Neuen Ordner erstellen ' Existiert der Ordner schon? If Not Directory.Exists("D:\Test") Then ' Nein! Jetzt erstellen... Directory.CreateDirectory("D:\Test") End If Hinweis 1: Die CreateDirectory-Methode kann auch verschachtelte Verzeichnisse erstellen! Die Erstellung von Ordnern kann aber durch viele Faktoren misslingen (z.B. durch fehlende Berechtigungen, Schreibschutz des Erstellungsortes oder der Pfad ist zu lang. Im 3.Teil diesen Workshops wird eine Klassenbibliothek erstellt, die diese Fehlerquellen beachtet. Hinweis 2: Die CreateDirectory-Methode gibt eine Struktur vom Typ DirectoryInfo zurück. Über diese Struktur können Sie Operationen wie Kopieren, Verschieben, Löschen oder Umbenennen vornehmen. Falls Sie aber nur Ordner erstellen wollen, brauchen Sie den Rückgabewert nicht zu speichern. Textdatei erstellen Um eine neue Datei anzulegen, muss man eine Instanz von der FileStream-Klasse anlegen. Dim FStream As New FileStream(“C:\TestStream.txt”, FileMode.Create, FileAccess.ReadWrite, FileShare.Read) Zur Erklärung: Der erste Parameter gibt den Dateinamen an. Der zweite, Mode, gibt an, wie eine Datei geöffnet wird. Dies entspricht dem For... in VB6. Hier eine Tabelle mit den möglichen Werten:
Der dritte Parameter legt den Zugriff fest. Mögliche Werte sind nur lesend (FileAccess.Read), nur schreibend (FileAccess.Write) oder Lese-/Schreibzugriff (FileAccess.ReadWrite). Der letzte Parameter gibt an, wie auf die Datei zugegriffen werden kann, wenn diese zum zweiten Mal geöffnet wird. Hier die möglichen Werte:
Hinweis: Auch das eigene Programm ist von diesen Werten betroffen. Daher kann auch das eigene Programm bei FileShare.None die Datei nicht öffnen. Diese Einschränkungen werden beim Schließen der Datei aufgehoben. In eine Textdatei schreiben ' Vorraussetzung: FStream ist ein gültiger FileStream ' StreamWriter anlegen, um komfortabel zu schreiben Dim SWriter As New StreamWriter(FStream) ' Textzeile schreiben (mit autom. Zeilenumbruch!) SWriter.WriteLine("Irgend eine Zeile") ' Text ohne autom. Zeilenumbruch schreiben SWriter.Write("Text ohne Zeilenumbruch") ' 2 Leerzeichen schreiben SWriter.Write(" ") Aus einer Textdatei lesen Genau wie beim Schreiben muss als erstes ein FileStream-Objekt erstellt werden, aus dem gelesen werden soll. ' FileStream anlegen Dim FStream As New FileStream("C:\Test.txt", FileMode.Open, _ FileAccess.Read, FileShare.Read) ' StreamReader erzeugen und Stream angeben, der verwendet werden soll Dim SReader As New StreamReader(FStream) ' Gesamten Inhalt in eine String-Variable speichern Dim sText As String = SReader.ReadToEnd ' Eine einzelne Zeile auslesen Dim sLine As String = SReader.ReadLine ' Eine Anzahl Zeichen auslesen Dim Text As String ' enthält gelesene Zeichen Dim BeginToRead As Integer = 0 ' Index, ab dem gelesen wird Dim Bytes As Integer = 15 ' Anzahl Zeichen, die gelesen werden Dim buf(Bytes) As Char ' enthält Zeichen, die gelesen werden SReader.Read(buf, BeginToRead, Bytes) Buffer = buf Beispiel: Alle Zeilen einer Textdatei "zeilenweise" auslesen: ' Text zeilenweise auslesen bis Dateiende Dim sLine As String Do Until SReader.Peek = -1 sLine = SReader.ReadLine Loop Nach dem Bearbeiten von Dateien… den StreamReader oder StreamWriter schließen und anschließend den FileStream. SReader.Close() ' oder SWriter.Close() FStream.Close() Ordner verschieben, umbenennen, kopieren und löschen Ordner umbenennen ' Ordner umbenennen Directory.Move("E:\Test", "E:\Test_Umbenannt") Ordner verschieben ' Ordner verschieben Directory.Move("E:\Temp", "E:\Ordner\Temp") Hinweis: Das Verschieben eines Ordners kann nur innerhalb eines Laufwerkes erfolgen. Es ist nicht möglich, einen Ordner mit Directory.Move auf ein anderes Laufwerk zu verschieben. Weiter ist zu beachten, dass der Zielordner bereits existieren muss und Sie den (neuen) Namen des Ausgangs-Ordners mit angeben. D.h.: Directory.Move kann einen Ordner verschieben und gleichzeitig umbenennen! Ordner kopieren
Im 3.Teil dieses Workshops erstellen wir einen kleinen Datei-Commander, der die Funktionalität von einer selbsterstellten Klassenbibliothek nutzt, wo auch eine eigene Kopierfunktion realisiert wird. Informationen über das FSO gibt es z.B. in der MSDN Library. Ordner löschen ' Ordner löschen Directory.Delete("E:\Temp", True) Der den 2.Parameter (recursive) legt fest, ob auch Unterverzeichnisse mit Inhalt gelöscht werden sollen (True) oder ob nur das leere Verzeichnis gelöscht wird (false). Was ist DirectoryInfo? Dim DInfo As New DirectoryInfo("C:\Test") Die Methoden sind ähnlich wie die der Directory-Klasse, nur mit leicht geänderten Namen. Weitere Informationen sind u.a. in der MSDN Library zu finden. Dateien verschieben, umbenennen, kopieren und löschen Datei verschieben ' Datei verschieben File.Move("D:\Test.txt", "D:\Temp\Test.txt") Hinweis: Das Zielverzeichnis muss bestehen! Es wird nicht angelegt. Falls es nicht existiert, wird eine IOException ausgelöst. Aber File.Move() kann eine Datei auch auf andere Laufwerke verschieben! Außerdem müssen Sie immer den (neuen) Dateinamen mit angeben. D.h. File.Move kann auch Dateien umbenennen. Datei umbenennen ' Datei umbenennen File.Move("D:\Test.txt", "D:\Test_Umbenannt.txt") Dateien kopieren ' Datei kopieren File.Copy("E:\Test.txt", "D:\Temp\Test.txt", True) Mit dem letzten Parameter (override) legen Sie fest, ob eine vorhandene Datei überschrieben werden darf (true) oder nicht (false). Hinweis: Geben Sie den Zielordner immer mit abschließendem Backslash (\) ein, damit ein Fehlverhalten erst gar nicht auftritt. Dateien löschen ' Datei löschen File.Delete("D:\Temp\Temp.txt") Hinweis: Falls Sie nicht über die benötigten Rechte verfügen, die Datei schreibgeschützt ist oder ein Verzeichnis statt eine Datei als Parameter übergeben wurde, wird eine Exception ausgelöst. Ausblick auf Teil 2 Im 2.Teil erfahren Sie, wie Sie verschiedene Attribute von Dateien, Ordnern oder Laufwerken auslesen können. Außerdem erfahren Sie, was es mit "Isoliertem Speicher" auf sich hat, welchen Nutzen er bringt und wie man ihn verwenden kann. Auch werden Sie einige nützliche Methoden und Klassen kennen lernen, die Ihnen mit Dateien und Ordner hilfreich sein können. Dieser Workshop wurde bereits 73.862 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Workshops finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats Oktober 2024 Heinz Prelle Firewall-Status unter WinXP/Vista prüfen Das Beispiel prüft, ob die Firewall unter Windows XP/Vista eingeschaltet ist oder nicht. Zudem wird eine Abfrage durchgeführt ob es sich bei dem zugrundeliegenden Betriebssystem um Windows XP/Vista handelt oder nicht. sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
|||||||||||||||||||||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |