Como salvar dados de C# em um arquivo txt?
-
21-12-2019 - |
Pergunta
Eu sou novo em programação e enfrentar algumas dificuldades.Espero que para salvar os dados, eu estou gerando (um WPF DataGrid
) em um arquivo de texto.
Isso é o que eu tenho atualmente:
MainWindow.xaml.cs:
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
string fileName = @"D:\projects\PersonInfos\Files\PersonInfos_Copy.txt";
PersonInfosTable.ConvertToTXTFile(fileName);
}
PersonInfosTable.cs:
public void ConvertToTXTFile(string fileName)
{
StringBuilder sb = new StringBuilder();
System.Text.Encoding Output = null;
Output = System.Text.Encoding.Default;
foreach (PersonInfos personinfos in PersonInfoDetails)
{
if (PersonInfos.SelectCheckBox == true)
{
string line = String.Format("L§" + personinfos.FirstName + "§" + personinfos.LastName + "§");
sb.AppendLine(line);
StreamWriter file = new StreamWriter(fileName);
file.WriteLine(sb);
file.Close();
}
}
}
Infelizmente, isso não funciona. PersonInfosDetails
é do tipo ObservationCollections<T>
e SelectCheckBox
é a caixa de verificação seleccionada pelo utilizador, e indica que arquivos que o usuário quer salvar.
Quaisquer ideias ou sugestões?Eu aprecio sua ajuda muito e muito obrigado pelo seu tempo!
Solução
Não está claro qual é o SelectCheckBox propriedade.No entanto, você precisa mover a parte escrita de seu programa fora do loop.Dentro do loop basta adicionar cada pessoa info para sua instância de StringBuilder.
public void ConvertToTXTFile(string fileName)
{
StringBuilder sb = new StringBuilder();
System.Text.Encoding Output = System.Text.Encoding.Default;
foreach (PersonInfos personinfos in PersonInfoDetails)
{
// Collect every personinfos selected in the stringbuilder
if (personinfos.SelectCheckBox == true)
{
string line = String.Format("L§" + personinfos.FirstName + "§" + personinfos.LastName + "§");
sb.AppendLine(line);
}
}
// Now write the content of the StringBuilder all together to the output file
File.WriteAllText(filename, sb.ToString())
}
Outras dicas
Você já tentou Como:Escrever um Ficheiro de Texto (Guia de Programação C#)?
Além disso, o código fornecido não funciona, a menos que SelectCheckBox
é uma propriedade estática do PersonInfos
de classe.Você provavelmente vai ter que alterar o if
declaração
if (personInfos.SelectCheckBox == true)
{
// ...
}