2010-03-17 5 views
2

J'ai le code comme ceci:Pourquoi IsWellFormedOriginalString échoue-t-il sur le fichier Uris?

string uriString = @"C:\Temp\test.html"; 
Uri uri = new Uri(uriString); 
bool goodCond = uri.IsWellFormedOriginalString(); 

Mais goodCond est faux! Qu'est-ce que je fais mal?


Edit: Merci Johannes et Catdirt. Je vais concentrer ma question: Comment puis-je convertir un chemin de fichier valide en un fichier valide Uri (en utilisant uri.IsWellFormedOriginalString comme une indication de la validité de l'Uri)? Jetez un oeil à ceci:

 DirectoryInfo di = new DirectoryInfo(@"c:\temp"); 
     FileInfo [] fis = di.GetFiles("test.html"); 
     FileInfo fi = fis[0]; 
     string uriString = fi.FullName; 
     Uri uri = new Uri(uriString); 
     bool goodCond = uri.IsWellFormedOriginalString() 

Obviosly fi.fullName est un chemin bien formé, mais encore goodCond est mauvais!

+0

De quel langage/environnement s'agit-il? –

Répondre

8

Votre URI n'est pas bien formée. Un exemple bien formé serait file:///C:/Temp/test.html.

PS Home:> (new-object Uri 'file:///C:/Temp/test.html').IsWellFormedOriginalString() 
True 
PS Home:> (new-object Uri 'file:///C:\Temp\test.html').IsWellFormedOriginalString() 
False 
PS Home:> (new-object Uri 'C:\Temp\test.html').IsWellFormedOriginalString() 
False 
PS Home:> (new-object Uri 'C:/Temp/test.html').IsWellFormedOriginalString() 
False 
+1

Piraté ceci: Debug.Assert (thePath.StartsWith (@ "C: \")); chaîne inversée = thePath.Replace (@ "\", @ "/"); chaîne uriSeed = @ "fichier: ///" + inversé; Uri resUri = nouvel Uri (uriSeed); – Avi

Questions connexes