Function
ниже я написал, чтобы проверить, существует ли путь File/Directory
. Рядом есть RecentPath
, который извлекает последний путь, который был проверен Function
.Почему функция выводит неправильное значение?
private static String IRecentPath;
public static String RecentPath
{
get
{
return IRecentPath;
}
}
public static Boolean Exists(String Path, Int32 PathType = 0)
{
return Exist(Path, PathType);
}
internal static Boolean Exist(String Path, Int32 PathType = 0)
{
Boolean Report = false;
switch (PathType)
{
case 0:
Report = (Directory.Exists(Path) || File.Exists(Path));
IRecentPath = Path;
break;
case 1:
String MPath = AppDomain.CurrentDomain.BaseDirectory;
Report = (Directory.Exists(System.IO.Path.Combine(MPath, Path)) || File.Exists(System.IO.Path.Combine(MPath, Path)));
IRecentPath = System.IO.Path.Combine(MPath, Path);
break;
case 2:
String LPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
Report = (Directory.Exists(System.IO.Path.Combine(LPath, Path)) || File.Exists(System.IO.Path.Combine(LPath, Path)));
IRecentPath = System.IO.Path.Combine(LPath, Path);
break;
default:
break;
}
return Report;
}
Проблема заключается в том, что RecentPath
всегда возвращает путь, который был установлен при вызове функции, а не конечный путь.
Пример:
Допустим, что мне нужно, чтобы проверить /user
каталог существует в myDocument
, а затем получить последний недавний путь, который был проверен, так:
Path.Exists("/user", 2);
MessageBox.Show(Path.RecentPath);
Выход должен быть C:\Users\Hossam\Documents\user\
но вместо этого это всего лишь /user
.
бога ооо вот это (Y) спасибо. – Enumy
«Интерферирует» может быть неправильным для этого. Это в основном работает IO.Path.Combine - он видит, что второй аргумент начинается с разделителя, по-видимому, предполагает, что он уже находится в корне, и просто выводит второй путь. См. [MSDN] (http://msdn.microsoft.com/en-us/library/fyy7a5kt%28v=vs.110%29.aspx) для некоторых деталей. – Andrei
@ Andrei Я знаю, что это нужно, и поэтому мне никогда не приходило в голову, что это проблема, но почему-то, когда я использовал только «пользователь», он работал нормально !!? – Enumy