Как получить только имя каталога от SaveFileDialog. FileName

Вот более простой ответ на ответ Майка Кингхана. Это обнаружит унаследованные методы. Он также проверит наличие точной подписи (в отличие от подхода jrok, который позволяет преобразовывать аргументы).

template 
class HasGreetMethod
{
    template 
    static std::true_type testSignature(void (T::*)(const char*) const);

    template 
    static decltype(testSignature(&T::greet)) test(std::nullptr_t);

    template 
    static std::false_type test(...);

public:
    using type = decltype(test(nullptr));
    static const bool value = type::value;
};

struct A { void greet(const char* name) const; };
struct Derived : A { };
static_assert(HasGreetMethod::value, "");

Пример выполнения

6
задан Redbaron 16 December 2013 в 15:13
поделиться

4 ответа

Использование:

System.IO.Path.GetDirectoryName(saveDialog.FileName)

(и соответствие System.IO.Path.GetFileName). Класс Пути действительно довольно полезен.

12
ответ дан 8 December 2019 в 16:14
поделиться

Объект контуров в System.IO синтаксические анализы это довольно приятно.

1
ответ дан 8 December 2019 в 16:14
поделиться

Вы могли создать объект FileInfo. Это имеет Имя, FullName и свойство DirectoryName.

var file = new FileInfo(saveFileDialog.FileName);
Console.WriteLine("File is: " + file.Name);
Console.WriteLine("Directory is: " + file.DirectoryName);
2
ответ дан 8 December 2019 в 16:14
поделиться

Так как наклонная черта вправо не позволяется в имени файла, один простой путь состоит в том, чтобы разделить SaveFileDialog. Имя файла с помощью Строки. LastIndexOf; например:

string filename = dialog.Filename;
string path = filename.Substring(0, filename.LastIndexOf("\"));
string file = filename.Substring(filename.LastIndexOf("\") + 1);
0
ответ дан 8 December 2019 в 16:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: