2016-06-15 6 views
0

Так что я сейчас пытаюсь сделать этот вопрос для tafe, но у меня возникли проблемы с его добавлением текста в файл после первого раза.Сохраните текст в уже созданном текстовом файле

«Создайте приложение, которое при запуске попросит пользователя выбрать выходной файл, используя окно« Сохранить файл ». Приложение имеет кнопку« Write to File », которая при нажатии будет иметь имя и возраст, которые пользователь ввел два текстовых поля и записал их непосредственно в файл. Пользователь может повторять действие нажатия кнопки так часто, как им хочется ».

Это мой текущий код для него:

private void Form4_Load(object sender, EventArgs e) 
{ 
    saveFileDialog1.Title = ("Choose Save Location"); 
    saveFileDialog1.ShowDialog(); 
} 

private void btnSendToFile_Click(object sender, EventArgs e) 
{ 
    string strName = txtName.Text; 
    string strAge = txtAge.Text; 
    string strTitles = ("Name \t\t Age"); 
    string strCombined = strTitles + "\n" + (strName + "\t\t" + strAge); 
    System.IO.StreamWriter OutFile; 

    MessageBox.Show("The Name and Age of the Person Entered Will be Written to a File"); 

    OutFile = System.IO.File.CreateText(saveFileDialog1.FileName); 
    OutFile.WriteLine(strCombined); 

    OutFile.Close(); 

    MessageBox.Show("The Details Have Been Written to File" + saveFileDialog1.FileName); 

    StreamWriter AddFile = File.AppendText(saveFileDialog1.FileName); 

    AddFile.Write(strCombined); 
} 

Я не уверен, если я должен делать петлю или нет, и это сама форма, https://gyazo.com/e2c4170d46295d6f92a35026e1f2304b

Любая помощь приветствуется, Заранее спасибо

ответ

0

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

Например, используя AppendAllText сделает все для вас (управление потоками, очистка и закрытие их, добавление в конец, создание файла, если он не существует и т. Д. И т. Д.).

так что вы можете заменить весь этот код:

System.IO.StreamWriter OutFile; 
    MessageBox.Show("The Name and Age of the Person Entered Will be Written to a File"); 
    OutFile = System.IO.File.CreateText(saveFileDialog1.FileName); 
    OutFile.WriteLine(strCombined); 
    OutFile.Close(); 
    MessageBox.Show("The Details Have Been Written to File" + saveFileDialog1.FileName); 

с

File.AppendAllText(saveFileDialog1.FileName, strCombined); 

Я понятия не имею, что вы делаете в коде, который следует, что (вызов appendtext, я предполагаю, что вы «Думаете, вам нужно добавить после создания?) в любом случае вам это не нужно. Так что, если вы просто хотите добавить весь текст «strcombined» в конце файла каждый раз, когда вы щелкаете вся функция должна выглядеть следующим образом:

private void btnSendToFile_Click(object sender, EventArgs e) 
{ 
    string strName = txtName.Text; 
    string strAge = txtAge.Text; 
    string strTitles = ("Name \t\t Age"); 
    string strCombined = strTitles + "\n" + (strName + "\t\t" + strAge); 

    MessageBox.Show("The Name and Age of the Person Entered Will be Written to a File"); 
    File.AppendAllText(saveFileDialog1.FileName, strCombined); 
    MessageBox.Show("The Details Have Been Written to File" + saveFileDialog1.FileName); 
} 

Также как побочный комментарий я бы переписать все это, как например для удобства чтения, эти предложения и не жесткие правила:

1) Удалены Венгерская нотация (не добавлять префикс к переменной, чтобы указать его тип, это вообще неодобрением)

2) Удалены много временных переменных, которые действительно не нужны (используются один раз в одной локальной функции)

Это делает гораздо меньше и очень читаемый функции:

private void btnSendToFile_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("The Name and Age of the Person Entered Will be Written to a File"); 
    File.AppendAllText(saveFileDialog1.FileName,"Name \t\t Age"+ "\n" + txtName.Text + "\t\t" + txtAge.Text); 
    MessageBox.Show("The Details Have Been Written to File" + saveFileDialog1.FileName); 
} 
+0

спасибо человеку абсолютная легенда – ASI

Смежные вопросы