Warum akzeptiert er ein * im Dateipfad nicht
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.
-
-
@Elephant Der
*
ist ein WildChar beim Ermitteln von Pfaden z.B. mitDirectory.GetFiles(folder, "*.jpg", SearchOption.TopDirectoryOnly)
Platzhalterzeichen sind hier "*" und "?".
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Versuch mal im Explorer eine Datei oder Ordner umzubenennen und ein * zu verwenden, dann bekommst du die Antwort.
Kannst du auch damit in Erfahrung bringen:
learn.microsoft.com/de-de/dotn…lidpathchars?view=net-7.0
learn.microsoft.com/de-de/dotn…ilenamechars?view=net-7.0
Zitat von mir 2023:
Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig -
RodFromGermany schrieb:
Der * ist ein WildChar
Das ist mir bekannt.
Deshalb benutze es ja auch, weil mir der Rest des Ordnernamens nach CD_0001 nicht bekannt ist.
Zur Antwort von DTF beim Schreiben oder umbenennen von Dateien/Ordner ist das ja auch logisch.
Sinn von * und ? ist ja das mein beim Lesen auch Dateien findet, wo man den genauen Namen nicht kennt.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Elephant“ ()
-
Elephant schrieb:
Deshalb benutze es ja auch
Poste mal den relevanten Code.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Hi,
ReadAllText erwartet einen eindeutigen Pfadnamen - wie die meisten andere Datei-IO-Anweisungen auch.
Wie sollte Readalltext auch reagieren, wenn Wildcards erlaubt wären und mehrere Dateien im Ordner auf das Suchmuster hin schreien "Hier, ich bin gemeint"?
Soll ReadAllText dann alle Dateien, welche mit dem Suchmuster übereinstimmen, nacheinander einlesen oder nur die erste oder die letzte passende Datei?
Um solche Probleme zu vermeiden, muss so eine Pfadangabe eben eindeutig zu nur einer Zieldatei führen.
Was ist denn Dein Ziel - was willst Du mit dem Code ausführen? -
RodFromGermany schrieb:
In welchem Kontext?
Dim CDName As String
CDName = My.Computer.FileSystem.ReadAllText(DateiName_komplett)
ListBox1.Items.Add(CDName)
Das Ganze in einer Schleife die die Nummer von CD hochzählt. -
RodFromGermany schrieb:
Poste mal den relevanten Code.
hatterdoch. Und eingesetzt sähe das so aus:
Elephant schrieb:
Warum akzeptiert er ein * im Dateipfad nichtMy.Computer.FileSystem.ReadAllText()
gemeint.
Was tut diese Methode? Sie liest eine Datei, eine!!
Und?
ist mit "C:\Music\Unbekannter Interpret\CD_0001*\CD_Name.txt" eine Datei bezeichnet?
Leider nein. Weil wegen des Platzhalters können das viele sein.
Deshalb akzeptiert er ein * im Dateipfad nicht
ups - zu spät.
-
ErfinderDesRades schrieb:
Leider nein. Weil wegen des Platzhalters können das viele sein.
Deshalb akzeptiert er ein * im Dateipfad nicht
Hatte gedacht er nimmt halt die erste die er findet.
Wie kann ich denn dann die Datei CD_Name.txt einlesen wenn ich den Rest des Ordnernamens hinter CD_0001 nicht kenne.
CD_0001 gibt es nur einmal in dem Vezeichnis -
Mir ist nicht ganz klar, was die Codezeilen bewirken sollen - also, was Du damit erreichen willst.
Wenn ich Dein Anliegen korrekt interpretiere, wäre mein Weg, zuerst das gesamte Inhaltsverzeichnis der eingelegten CD in ein temporäres Array oder eine Liste einzulesen und mir aus dieser die Datei, welche dem Suchmuster entspricht, herauszufiltern.
Dann habe ich den Klarnamen der Text-Datei, welchen ich an ReadAllText übergeben kann. -
Dideldum schrieb:
zuerst das gesamte Inhaltsverzeichnis der eingelegten CD in ein temporäres Array
So könnte ich das lösen.
Ich müsste dann das gesamte Verzeichnis C:\Music\Unbekannter Interpret\ einlesen.
Wie lese ich denn das gesamte Verzeichnis in ein Array ein (google hat bei einer Schnellsuche keine Antwort)? -
Elephant schrieb:
Wie lese ich denn das gesamte Verzeichnis in ein Array ein (google hat bei einer Schnellsuche keine Antwort)?
Was haste denn bei google eingegeben? -
ErfinderDesRades schrieb:
Was haste denn bei google eingegeben?
Visual Basic gesamtes Verzeichnis in ein Array einlesen -
-
Elephant schrieb:
Visual Basic gesamtes Verzeichnis in ein Array einlesen0
nehmen
oder
Du gehst der Reihe nach über alle Indizes durch.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Wenn ich aus dem Bett gekommen bin (ca. 1h) schreibe ich Dir den Codeschnipsel.
Das ist eine Funktion, welche rekursiv arbeitet, also sich selbst so oft aufuft, bis sie alle Ordner - auch der Unter-Unter-Unter-Ordner - durchlaufen hat und dabei alle Dateien ausliest.
hier mal auf die Schnelle:
VB.NET-Quellcode
- Imports System.IO
- Sub Main()
- Dim startVerzeichnis As String = "C:\Dein\Startverzeichnis" ' Ändern Sie dies auf den Pfad Ihres Startverzeichnisses
- ' Die Methode "DateienInOrdnerEinlesen" aufrufen, um alle Dateien im Startverzeichnis und seinen Unterverzeichnissen einzulesen
- DateienInOrdnerEinlesen(startVerzeichnis)
- End Sub
- Sub DateienInOrdnerEinlesen(verzeichnis As String)
- ' Überprüfen, ob das Verzeichnis existiert
- If Not Directory.Exists(verzeichnis) Then
- Console.WriteLine($"Verzeichnis existiert nicht: {verzeichnis}")
- Return
- End If
- Try
- ' Dateien im aktuellen Verzeichnis einlesen
- Dim dateien As String() = Directory.GetFiles(verzeichnis)
- For Each datei As String In dateien
- Console.WriteLine($"Gefundene Datei: {datei}")
- Next
- ' Unterverzeichnisse im aktuellen Verzeichnis einlesen und rekursiv nach Dateien suchen
- Dim unterverzeichnisse As String() = Directory.GetDirectories(verzeichnis)
- For Each unterverzeichnis As String In unterverzeichnisse
- DateienInOrdnerEinlesen(unterverzeichnis)
- Next
- Catch ex As Exception
- Console.WriteLine($"Fehler beim Einlesen von Dateien: {ex.Message}")
- End Try
- End Sub
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dideldum“ ()
-
Dideldum schrieb:
Wenn ich aus dem Bett gekommen bin (ca. 1h) schreibe ich Dir den Codeschnipsel.
Danke.
Da konnte ich mir das nötige herausnehmen. -
Gerne!
Ein Tip, solche Codeschnipsel suche ich inzwischen häufig auf:
Chat OpenAI
Das klappt dort schon recht ordentlich.
Meine Anfrage dort war:
"vb.net ordnerstruktur alle Dateien einlesen"
Aber weisst ja - traue keinem Code, den Du nicht selbst geschrieben hast. -
-
Hi,
die Datei-Pfade werden in der Reihenfolge der Abarbeitung der Schleife dem Array zugewiesen.
Wenn Du die Funktion geistig abarbeitest, siehst Du, dass zuerst alle Dateien des Stammverzeichnisses dem Array hinzugefügt werden, dann die Dateien der ersten Ordnerebene nacheinander hinzugefügt werden. Haben diese Ordner weitere Unterordner, werden die Dateiinhalte dieser Ordner nacheinander hinzugefügt.
Also kurz gesagt, wild durcheinander.
-
Ähnliche Themen
-
Textbox Txt Datei erstellen mit wählbarem Name
VinoScaletta - - Sonstige Problemstellungen
-
5 Benutzer haben hier geschrieben
- Elephant (9)
- Dideldum (5)
- RodFromGermany (4)
- ErfinderDesRades (4)
- DTF (1)