2010-07-23 45 views
11

Ich versuche, eine Datei inunzulässiges Zeichen in Pfad

C:\Program Files (x86)\test software\myapp\demo.exe 

In VS-Debugger befindet sich zu bekommen sehe ich den Weg als:

"\"C:\\\Program Files (x86)\\\test software\\\myapp\\\demo.exe\"" 

, wenn ich es ausdrucken ich sehe in der Konsole:

"C:\Program Files (x86)\test software\myapp\demo.exe" 

aber wenn ich versuche, so etwas wie

FileInfo fi = new FileInfo(PathMentionedAbove); 

ich bekomme illegales Zeichen im Pfad.

Was ist los? Die Datei existiert und der Pfad ist korrekt. Was ist illegal über diesen Weg?

jede Hilfe wäre willkommen.

Antwort

16

Ihr Pfad enthält „am Anfang und am Ende. Lassen Sie die Anführungszeichen, und es wird in Ordnung sein.

Die \“ am Anfang und Ende von dem, was Sie in VS-Debugger zu sehen ist, was uns sagt, dass die Anführungszeichen buchstäblich in der Zeichenkette sind.

6

Die Zeichenfolge ist in doppelte Anführungszeichen eingeschlossen. Ja, das ist kein gültiges Zeichen in einem Pfad.

Sie sollten wahrscheinlich es an der Quelle bekämpfen, aber man kann sie mit Streifen aus:

 path = path.Replace("\"", ""); 
+0

@ ke3pup Bitte überprüfen Sie dies als die Antwort, da es dein Problem gelöst hat. –

3

Sie scheinen die Anführungszeichen zu haben (") zu Beginn in der Zeichenfolge eingebettet und Ende. Diese werden nicht benötigt und sind ungültige Zeichen in einem Pfad. Wie initialisierst du die Zeichenfolge mit dem Pfad?

Dies kann aus dem Debugger Visualizer gesehen werden, wie der String mit "\" beginnt und mit \"" endet, zeigt es, dass die Anführungszeichen Teil der Zeichenfolge sind, wenn sie nicht sein sollten.

Sie zwei tun kann - eine regelmäßige Escape-Sequenzen (mit \) oder eine verbatim string literal (das beginnt mit einem @):

string str = "C:\\Program Files (x86)\\test software\\myapp\\demo.exe"; 

Oder:

string verbatim = @"C:\Program Files (x86)\test software\myapp\demo.exe"; 
0

Ich würde usualy die Eingabe Weg wie folgt ....

FileInfo fi = new FileInfo(@"C:\Program Files (x86)\test software\myapp\demo.exe"); 

Haben Sie reg Ist das @ am Anfang der Zeichenfolge? ;-)

+0

Ich habe versucht, FileInfo fi = new FileInfo(@Path); , aber ich bekomme immer noch das gleiche Problem. Ich kann nicht tun, was du sagst, da ich den Weg von woanders herbekomme und ihn in einer Kette abspeicherst. – ke3pup

7

Versuchen Sie folgendes:

string path = @"C:\Program Files (x86)\test software\myapp\demo.exe"; 
0

versuchen

"C:/Program Files (x86)/Testsoftware/myapp/demo.exe"

Verwandte Themen