2010-07-23 5 views
11

Je suis en train de se rendre à un fichier situé danscaractère illégal dans le chemin

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

Dans VS débogueur je vois le chemin que:

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

quand je l'imprime i voir dans la console:

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

mais lorsque je tente quelque chose comme

FileInfo fi = new FileInfo(PathMentionedAbove); 

Je reçois un caractère Illégal dans le chemin.

Qu'est-ce qui ne va pas? le fichier existe et le chemin est correct. Qu'est-ce qui est illégal au-dessus de ce chemin?

toute aide serait appréciée.

Répondre

16

Votre chemin comprend « au début et à la fin. Laissez tomber les guillemets, et ce sera ok.

Le \ » au début et à la fin de ce que vous voyez dans VS Debugger est ce que nous dit que les citations sont littéralement dans la chaîne.

6

La chaîne est entourée de guillemets. Oui, ce n'est pas un caractère valide dans un chemin.

Vous devriez probablement attaquer à la source, mais vous pouvez les enlever avec:

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

@ ke3pup S'il vous plaît vérifier que la réponse, puisqu'elle a résolu votre problème. –

3

Vous semblez avoir les guillemets (") intégrés dans votre chaîne au début et à la fin. Ceux-ci ne sont pas nécessaires et sont des caractères illégaux dans un chemin. Comment initialisez-vous la chaîne avec le chemin? Cela peut être vu à partir du visualiseur du débogueur, car la chaîne commence par "\" et se termine par \"", cela montre que les guillemets font partie de la chaîne, alors qu'ils ne devraient pas l'être.

Vous pouvez faire deux choses - une chaîne régulière échappé (à l'aide \) ou un verbatim string literal (qui commence par un @):

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

Ou:

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

je serais usualy entrer dans le chemin comme ceci ....

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

Avez-vous reg ister le @ au début de la chaîne? ;-)

+0

J'ai essayé FileInfo fi = new FileInfo(@Path); mais j'ai toujours le même problème. Je ne peux pas faire ce que vous dites depuis que je reçois le chemin d'ailleurs où et le stocker dans une chaîne. – ke3pup

7

Essayez ceci:

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

essayer

"C:/Program Files (x86)/logiciel de test/myapp/demo.exe"

Questions connexes