Path.GetFullPath() gibt Eingaben mit \r zurückC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Path.GetFullPath() gibt Eingaben mit \r zurück

Post by Anonymous »

Warum erkennt Path.GetInvalidPathChars() \r nicht, Path.GetFullPath() jedoch? (.NET Framework 4.7.2)
Ich arbeite mit einer .NET 4.7.2-Anwendung und überprüfe Dateipfade.
Mir ist ein unerwartetes Verhalten aufgefallen, wenn die Eingabezeichenfolge einen abschließenden Wagenrücklauf (\r) enthält.

Code: Select all

string input = "C:\\Temp\\TestFolder\r";

if (input.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0 ||
input.IndexOfAny(Path.GetInvalidPathChars()) >= 0)
{
// This block is NOT hit
return true;
}

try
{
var fullPath = Path.GetFullPath(input);

if (fullPath.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0 ||
fullPath.IndexOfAny(Path.GetInvalidPathChars()) >= 0)
{
// This block IS hit
return true;
}
}
catch
{
return true;
}
Beobachtung
  • Code: Select all

    input
    enthält ein abschließendes \r
  • Das erste if gibt nicht true zurück
  • Nach dem Aufruf von Path.GetFullPath(input) gibt das zweite if true zurück
Fragen
  • Warum nicht Path.GetInvalidPathChars() erkennt das \r in der ursprünglichen Eingabe?
  • Ist Path.GetInvalidPathChars() nicht als vollständiger Validierungsmechanismus gedacht?
  • Wird dieses Verhalten in .NET 4.7.2 erwartet oder handelt es sich um einen Fehler?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post