2013-08-05 2 views
1

Это, вероятно, простой вопрос: я пишу приложение WinForms C# в VS 2012. Мне было интересно, есть ли способ добавить расширение, такое как .csv, к написанию в текстовом поле. Скажем, пользователь написал в C: \ Users \ Desktop \ имя_файла, но оставил часть .csv пути. Есть ли способ добавить CSV после нажатия кнопки выполнения?Добавление текста в путь к файлу

Любая помощь будет высоко оценена.

ответ

9

Вы можете использовать Path.ChangeExtension.

// Nota bene: Path.ChangeExtension does not change textBox1.Text directly (or any 
//   argument given), you MUST use the result if you care about it. 
string newPath = Path.ChangeExtension(textBox1.Text, "csv"); 

Период не является обязательным, а компонент имени файла не обязательно должен содержать расширение.

В качестве ссылки в будущем, если вы можете думать о , то что-то вам нужно сделать с помощью пути к файлу или каталогу ... он существует в System.IO.Path. Редко для того, чтобы не поддерживать общую задачу в этом классе.

+0

Я использую StreamWriter, что как finalOutput = новый StreamWriter (TextBox1.Text); но это не сработает с этим для некоторого reasosn. – Stick

+0

Возвращает ли новый путь к 'textBox1.Text'? – user7116

+0

Должен ли я писать как, finalOutput = new StreamWriter (newPath)? – Stick

1

Если вы не хотите, чтобы изменить допустимое расширение в строке, вы могли бы это сделать, как это вместо:

// first test for an extension 
if(!Path.HasExtension(textBox1.Text.Trim())) 
{ 
    // then add on '.csv' if one does not exist 
    string path = Path.ChangeExtension(textBox1.Text.Trim(), ".csv"); 

    // ... use path ... 
} 
+0

@ downvoter почему downvoted? – Ehsan

+1

(+1) Я обновил это, чтобы использовать «правильный» способ добавить/заменить расширение, с некоторым объяснением того, как ваши отличаются от моих. – user7116

+0

может кто-нибудь сказать мне, почему я дважды опустился? Это нелепо. Если есть проблема, по крайней мере, дайте мне знать – Ehsan