Ich versuche, ein Verzeichnis in c # in einen Namen umzubenennen, der nur bei unterschiedlichem Fall derselbe ist.
Zum Beispiel: f: \ test zu f: \ TEST
Ich habe diesen Code ausprobiert:
%Vor%und ich bekomme eine IOException - Quell- und Zielpfad müssen anders sein. Ich habe auch Directory.Move () mit dem gleichen Ergebnis versucht.
Wie wird das gemacht? Muss ich ein separates temporäres Verzeichnis erstellen, die enthaltenen Dateien aus dem ursprünglichen Verzeichnis in das temporäre Verzeichnis verschieben und dann das Original löschen und das temporäre Verzeichnis umbenennen?
Auch wenn die .NET-Methode DirectoryInfo.MoveTo
eine Ausnahme auslöst, wenn der Name identisch ist, können Sie die Windows-API MoveFile
funktioniert wie folgt, um die Umrandung des Verzeichnisnamens festzulegen:
Mit dieser externen Erklärung:
%Vor%Es funktioniert gut für mich, wenn der Name nur im Fall unterscheidet. Ich habe nicht versucht, es so zu nennen, wenn der Name bereits genau so ist wie angegeben.
Das hat den Vorteil, dass das Verzeichnis niemals unter seinem ursprünglichen Namen verschwindet.
Es hat jedoch den Nachteil, dass es nur unter Windows funktioniert.
Die Antwort ist ja in diesem Fall - das Dateisystem selbst sieht die beiden nicht anders, also müssen Sie löschen und das Hinzufügen als neuen Namen (oder Verschieben / Löschen / Verschieben wie vorgeschlagen)