private static String GetPath(params String[] pathSegments)
{
if ((pathSegments != null) && (pathSegments.Length > 0))
{
var path = Environment.ExpandEnvironmentVariables(pathSegments[0]);
for (var i = 1; i < pathSegments.Length; i++)
{
var expanded = Environment.ExpandEnvironmentVariables(pathSegments[i]);
path = Path.Combine(path, expanded);
}
return (path);
}
return (null);
}
private static void ShowPath(params String[] pathSegments)
{
var path = GetPath(pathSegments);
if (String.IsNullOrEmpty(path) == false)
{
Console.WriteLine(path);
Console.WriteLine(Directory.Exists(path));
var di = new DirectoryInfo(path);
Console.WriteLine(di.FullName);
Console.WriteLine(Directory.Exists(di.FullName));
path = GetPath(path, "csc.exe");
Console.WriteLine(path);
Console.WriteLine(File.Exists(path));
var fi = new FileInfo(path);
Console.WriteLine(fi.FullName);
Console.WriteLine(File.Exists(fi.FullName));
}
Console.WriteLine();
}
static void Main()
{
ShowPath();
ShowPath(null);
ShowPath(@"C:");
Alte URL:
/snippet/path-combine-mit-unendlich-vielen-segmenten/5962
Ab .NET 4.0 ist diese spezielle Überladung bereits in .NET integriert:
https://msdn.microsoft.com/en-us/library/dd991142(v=vs.110).aspx
Der Aufruf von Environment.ExpandEnvironmentVariables ist übrigens unnötig. Path.Combine macht das schon selbst.
Der Aufruf von Environment.ExpandEnvironmentVariables ist nach meinen Feststellungen NICHT unnötig. Path.Combine macht das bei mir unter FW 4.5.1 leider NICHT selbständig.
Du hast wohl recht…ich habe es letzte Woche extra nochmal getestet, nur jetzt werden die Variablen auch nicht mehr aufgelöst :/