Взгляните на методы в классе Path , в частности Path.GetFileNameWithoutExtension () и Path.GetExtension () .
Вы даже можете найти Path.GetRandomFileName () полезным!
Изменить:
Раньше я использовал технику попытке записать файл (с моим желаемым именем), а затем с помощью вышеуказанных функций создать новое имя, если выбрано соответствующее IOException
, повторение до успешного.