#c# #winforms
#c# #winforms
Вопрос:
У меня есть этот код:
private void button1_Click(object sender, EventArgs e)
{
string x = "Name: " label1.Text " " "FamilyName: " label2.Text " " "FatherName: " label3.Text " " "PhoneNumber: " label4.Text;
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
if (radioButton1.Checked == true)
{
System.IO.File.WriteAllText(folderBrowserDialog1.SelectedPath label1.Text ".txt", x);
MessageBox.Show("The file registered.");
}
else if (radioButton2.Checked == true)
{
System.IO.File.WriteAllText(folderBrowserDialog1.SelectedPath label1.Text ".doc", x);
MessageBox.Show("The file registered.");
}
else
{
MessageBox.Show("Please choose one of the formats.");
}
}
}
И это для хранения некоторой информации из меток в файле и динамического выбора имени файла label1
. Затем я устанавливаю переключатель, чтобы выбрать между сохранением файла в формате txt или формате doc. После выбора одного из форматов и нажатия кнопки Сохранения folderBrowserDialog
откроется окно, чтобы я мог выбрать путь, по которому я хочу сохранить свой файл. Но когда я выбрал свой путь, допустим, я выбрал этот путь: ‘G:SavingFileTextFiles ‘, вместо того чтобы сохранять файл в папке TextFiles, сохраните его в папке SavingFile.
Мой вопрос в том, почему он не сохраняет файл в последней папке? И как я могу это исправить?
Комментарии:
1. В качестве примечания, вы не сохраняете этот текст в двух разных форматах , вы сохраняете один и тот же текстовый формат в файлах с двумя разными расширениями.
Ответ №1:
Вы не должны объединять свои пути в виде строки, а использовать System.IO.Path.Вместо этого объедините. поскольку это также позаботится о правильных разделителях путей, которые отсутствуют в вашем коде, поскольку SelectedPath
не заканчиваются разделителем путей
Итак, в вашем случае
var filepath = System.IO.Path.Combine(folderBrowserDialog1.SelectedPath, label1.Text ".txt");
System.IO.File.WriteAllText(filepath, ....);
Это позаботится о необходимых разделителях путей.
Если вы используете .Net Core, вы также можете использовать System.IO.Path.Join. Но имейте в виду, что есть некоторые различия в поведении этих двух методов в отношении укоренения результирующего пути. Подробности см. в связанных документах.
Ответ №2:
Я также нашел другой способ сохранения своих файлов, который проще, чем способ, который я сделал выше. Я могу просто использовать saveFileDialog
.
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
System.IO.File.WriteAllText(saveFileDialog1.FileName, x);
}