2016-10-16 2 views
-5

Dans mon projet, j'enregistrer des fichiers xml dans un dossier. La variable "header" contient le nom du fichier.Pourquoi Visual Studio remplace-t-il ma barre oblique par une barre oblique inverse?

string header = "anyString"; 

La ligne pour enregistrer le fichier est:

xmlDoc.Save([email protected]"D:\00_Coding\00_Repos\MarcSchaetz\MarcSchaetz.STCut\Data\{header}.cutml"); 

Cela fonctionne bien et tout, sauf si, comme l'en-tête contient une barre oblique (/):

string header = "d/d"; 

Puis-je obtenir DirectoryNotFoundException car Visual Studio n'a pas pu trouver le chemin

"D:\00_Coding\00_Repos\MarcSchaetz\MarcSchaetz.STCut\Data\d\d.cutml"

Ainsi Visual Studio remplace automatiquement la barre oblique avec une barre oblique inverse. Mais pourquoi et comment puis-je encore enregistrer un fichier avec une barre oblique dans ma variable?

+2

'/' n'est pas un nom de fichier valide char. 'header' ne doit pas contenir de barre oblique. –

+2

Un nom de fichier ou un nom de répertoire ne peut pas contenir de barre oblique car il est utilisé comme séparateur par le système d'exploitation. – HimBromBeere

+1

Je doute fortement que Visual Studio le fasse. Voulez-vous dire C#? –

Répondre

1

Visual Studio ne remplace pas le / avec \. Vérifiez ceci:

string header = "d/d"; 
string result = [email protected]"D:\00_Coding\00_Repos\MarcSchaetz\MarcSchaetz.STCut\Data\{header}.cutml"; 

//Result: D:\\00_Coding\\00_Repos\\MarcSchaetz\\MarcSchaetz.STCut\\Data\\d/d.cutml 

En ce qui concerne l'utilisation d'un / dans un chemin - Il ne peut pas être utilisé pour les noms de fichiers/répertoires dans le système d'exploitation. Si vous essayez de créer sur vous obtiendrez ceci: (j'ai essayé d'insérer un /)

enter image description here

Il est donc logique que le code avec lancer une DirectoryNotFoundException parce qu'il n'y a vraiment pas de répertoire avec cette chemin

+0

Stupide moi. Bien sûr que tu as raison. merci: D – MarcSchaetz