Ну, так как ни *
, ни ?
может быть в пути: они находятся в
Char[] forbidden = Path.GetInvalidPathChars();
так что вы можете просто смотреть на них
String path = @"C:\MyData\Shared\*.txt";
...
Boolean isWildCard = path.ContainsAny('?', '*');
Что касается файла/каталога
Boolean isFile;
if (File.Exists(path))
isFile = true; // file already exists
else if (Directory.Exists(path))
isFile = false; // directory already exists
else if (String.Equals(Path.GetExtension(path), ".txt", StringComparison.InvariantCultureIgnoreCase))
isFile = true; // has txt extension, let it be a file
else
isFile = false;
Однако кажется, что вам не нужно иметь никаких ветвей (isWild Карты, ISFILE) и просто перемещать файлы:
String path = @"C:\MyData\Shared\*.txt";
...
String sourceDirectory = Path.GetDirectoryName(path);
String destination = @"C:\Destination";
Directory.GetFiles(sourceDirectory, "*.txt")
.ForEach(file => File.Move(file, Path.Combine(destination, Path.GetFileName(file))));
Что-то вроде 'Directory.GetFiles (@ "C: \ Shared \". "* .txt") ForEach (Файл => File.Move (файл, путь .Combine (@ "C: \ Destination", Path.GetFileName (файл)))); ' –
Чтобы проверить открытку:' Boolean isWildCard = path.ContainsAny ('?', '*'); 'Поскольку ни' ? 'или' * 'могут использоваться в пределах пути. –
Возможно, вы захотите это проверить: http://stackoverflow.com/questions/1395205/better-way-to-check-if-path-is-a-file-or-a-directory –