Используйте класс Path при работе с путями файлов и используйте класс File и Directory при работе с реальными файлами и папками.
string str1=@"C:/Documents and Settings/All Users/Desktop/AccessData FTK Imager.lnk";
string str2=@"C:/Documents and Settings/All Users/Start Menu/Programs/AccessData";
string str3=@"C:/Documents and Settings/Administrator/Desktop/AccessData FTK Imager.exe:Zone.Identifier";
Console.WriteLine(Path.GetFileName(str1));
Console.WriteLine(Path.GetFileName(str2));
Console.WriteLine(Path.GetFileName(str3));
выводит:
AccessData FTK Imager.lnk
AccessData
Zone.Identifier <-- it chokes here because of the :
Этот классработает со строками, так как у меня нет этих конкретных файлов и / или папок в моей системе.Также невозможно определить, является ли AccessData
папкой или файлом без расширения.
Я мог бы использовать здравый смысл и объявить все с расширением как файл (Path.GetFileExtension
может бытьиспользуется здесь), а все остальное - как папка.
Или я мог бы просто проверить, является ли рассматриваемая строка действительно файлом или папкой на моем компьютере, используя (File.Exists
и Directory.Exists
соответственно).
if (File.Exists(str2))
Console.WriteLine("It's a file");
else if (Directory.Exists(str2))
Console.WriteLine("It's a folder");
else
Console.WriteLine("It's not a real file or folder");