¿Cómo guardar datos de C# en un archivo txt?
-
21-12-2019 - |
Pregunta
Soy nuevo en programación y enfrento algunas dificultades.Espero guardar los datos que estoy generando (un WPF DataGrid
) en un archivo de texto.
Esto es lo que tengo actualmente:
Ventana principal.xaml.cs:
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
string fileName = @"D:\projects\PersonInfos\Files\PersonInfos_Copy.txt";
PersonInfosTable.ConvertToTXTFile(fileName);
}
PersonaInfosTable.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();
}
}
}
Desafortunadamente, esto no funciona. PersonInfosDetails
es de tipo ObservationCollections<T>
y SelectCheckBox
es la casilla de verificación seleccionada por el usuario e indica qué archivos desea guardar el usuario.
¿Alguna idea o sugerencia?¡Apreciaría mucho tu ayuda y muchas gracias por tu tiempo!
Solución
No está claro qué es la propiedad SelectCheckBox.Sin embargo, necesita mover la parte de escritura de su programa fuera del ciclo.Dentro del bucle, simplemente agregue la información de cada persona a su instancia 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())
}
Otros consejos
Has probado Cómo:Escribir en un archivo de texto (Guía de programación de C#)?
Además, el código que ha proporcionado no funcionará a menos que SelectCheckBox
es una propiedad estática de la PersonInfos
clase.Probablemente tendrás que cambiar el if
declaración a
if (personInfos.SelectCheckBox == true)
{
// ...
}