From MSDN
Most members of the Path class do not interact with the file system
and do not verify the existence of the file specified by a path string
Again from MSDN on Path class
In members that accept a path, the path can refer to a file or just a
directory. The specified path can also refer to a relative path or a
Universal Naming Convention (UNC) path for a server and share name
Said that, you could write
string myUNCPath = @"\\MyServer\MySharedDrive\MyDirectory\MySubDirectory\Myfile.csv";
string myParent = Path.GetDirectoryName(Path.GetDirectoryName(myUNCPath));
string finalFile = Path.Combine(@"\\MyServer\MySharedDrive\MyDirectory","myNewFile.csv");
As a safety check you should execute two separate calls to Path.GetDirectoryName because if you have only one level deep of subdirectory then the result of Path.GetDirectoryName will be null
For example, if the initial UNC path is
string myUNCPath = @"\\MyServer\MySharedDrive\MyDirectory\Myfile.csv";
string myParent = Path.GetDirectoryName(myUNCPath);
if(!string.IsNullOrWhiteSpace(myParent))
{
myParent = Path.GetDirectoryName(myParent);
if(!string.IsNullOrWhiteSpace(myParent))
{
string finalFile = Path.Combine(myParent, "myNewFile.csv");
.....
}
}
For the part relative to your first question, the discovery of an UNC path is relatively easy.
See this article on Windows Dev Center about Paths and Files
Console.WriteLine(IsUNCPath(myUNCPath));
......
bool IsUNCPath(string pathToCheck)
{
return pathToCheck.StartsWith(@"\\");
}