C # - Einfachste Möglichkeit zum Parsen von Dateinamen mit Leerzeichen z. "C: \ Test \ Datei mit Leerzeichen.txt"

7

Ich versuche, einen vollständigen Dateipfad an FFMPEG zu übergeben.

%Vor%

und es ist offensichtlich nicht die Tatsache, dass der Pfad Leerzeichen enthält, Fehler wie folgt:

%Vor%

Was ist der einfachste Weg, um Dateinamen mit Leerzeichen zu verwenden? Sollte ich nur alle Leerzeichen durch ~ Zeichen ersetzen oder gibt es einen besseren Weg? Ich habe versucht, die Zeichenfolge mit verschiedenen Zeichen zu umgehen:

%Vor%

Aber das funktioniert nicht. Gibt es einen Trick, Räume zu konservieren?

    
Dominic Bou-Samra 07.12.2009, 01:42
quelle

6 Antworten

33

Das einzige Mal, wenn Sie eine spezielle Behandlung mit Dateinamen mit Leerzeichen durchführen müssen, ist, wenn Sie sie an externe Tools oder Formate übergeben. Wenn Sie beispielsweise eine Argumentliste für eine externe ausführbare Datei erstellen, müssen Sie nur den Pfad angeben:

%Vor%

... was zu dieser Befehlszeile führt:

  

Programm.exe   "C: \ TestFolder \ Input \ Freunde - Jahreszeit   6 - Gag Reel.avi "

    
Michael Petrotta 07.12.2009, 01:52
quelle
7

System.IO. Pfad bietet mehrere Methoden zum Bearbeiten von Dateinamen. .

    
Nescio 07.12.2009 01:44
quelle
5

benutzt du FileInfo class?

Es enthält (fast) alles über eine Datei, einschließlich Attribute und Dateiversionen, und Sie müssen sich keine Gedanken über Leerzeichen oder andere unerwünschte Zeichen machen. Solange die Datei existiert, funktioniert sie gut in FileInfo.

benutze es als
FileInfo f = new FileInfo(fullPathEvenWithSpaces);

    
AceMark 07.12.2009 02:10
quelle
4

Im Allgemeinen müssen Dateipfade, die als Argumente in der Befehlszeile übergeben werden, den Pfad mit Anführungszeichen umgeben.

Wenn Sie davon sprechen, Dateipfade als Argument für Ihr Programm zu akzeptieren, ist es am einfachsten, von Benutzern die Angabe von Pfaden zu verlangen. Auf diese Weise enthält das Argument args für Ihre Hauptmethode den gesamten Pfad als eine einzelne Zeichenfolge.

Wenn Sie andere Programme aufrufen und Argumente übergeben, müssen Dateipfade mit Leerzeichen in Anführungszeichen gesetzt werden.

%Vor%     
Kevin Kibler 07.12.2009 01:56
quelle
4

Ich stimme dem obigen Beitrag zu. Um es einfacher zu machen, hier ist der Code, den Sie verwenden müssen. In My Humble Opinion ist der einzige gute Dateiname ein Leerzeichen-freier Dateiname.

Dafür in c # code habe ich das:

%Vor%

Dies fügt Ihrer Klasse eine Methode hinzu, die folgendermaßen verwendet werden kann:

Zeichenfolge goodFileName = ToShortPathName (evilFileName);

HINWEIS: Ich benutze dies in einer Benutzeroberfläche, so dass es mir nichts ausmacht, nicht Thread-sicher zu sein und den StringBuider wiederzuverwenden. Wenn Sie sich in einer Multithread-Umgebung befinden, stellen Sie sicher, dass die StringBuilder-Zuweisung innerhalb Ihrer Methode abgerufen wird.

    
user246013 07.01.2010 23:43
quelle
-2

Alle Dateien haben einen kurzen Pfadnamen, der mit DOS 8.3 kompatibel ist. Der einzige Weg, um diesen Dateinamen zu erhalten, ist GetShortPathName. Die beste Erklärung, die ich finden kann, ist unter der folgenden Adresse:

Ссылка

    
Jeff Hornby 07.12.2009 02:25
quelle

Tags und Links