txt texto notas lineas leer guardar escribir datos create crear bloc archivos archivo agregar c# streamwriter

c# - texto - Crear archivo si el archivo no existe



guardar datos en un bloc de notas c# (5)

Necesito obtener mi código para leer si el archivo no existe. En este momento está leyendo si existe crear y anexar. Aquí está el código:

if (File.Exists(path)) { using (StreamWriter sw = File.CreateText(path)) {

¿Haría esto?

if (! File.Exists(path)) { using (StreamWriter sw = File.CreateText(path)) {

Editar:

string path = txtFilePath.Text; if (!File.Exists(path)) { using (StreamWriter sw = File.CreateText(path)) { foreach (var line in employeeList.Items) { sw.WriteLine(((Employee)line).FirstName); sw.WriteLine(((Employee)line).LastName); sw.WriteLine(((Employee)line).JobTitle); } } } else { StreamWriter sw = File.AppendText(path); foreach (var line in employeeList.Items) { sw.WriteLine(((Employee)line).FirstName); sw.WriteLine(((Employee)line).LastName); sw.WriteLine(((Employee)line).JobTitle); } sw.Close(); }

}



Por ejemplo

string rootPath = Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.System)); rootPath += "MTN"; if (!(File.Exists(rootPath))) { File.CreateText(rootPath); }


Sí, necesita negar File.Exists(path) si desea verificar si el archivo no existe.


Simplemente puedes llamar

using (StreamWriter w = File.AppendText("log.txt"))

Creará el archivo si no existe y lo abrirá para adjuntarlo.

Editar:

Esto es suficiente:

string path = txtFilePath.Text; using(StreamWriter sw = File.AppendText(path)) { foreach (var line in employeeList.Items) { Employee e = (Employee)line; // unbox once sw.WriteLine(e.FirstName); sw.WriteLine(e.LastName); sw.WriteLine(e.JobTitle); } }

Pero si insiste en verificar primero, puede hacer algo como esto, pero no veo el punto.

string path = txtFilePath.Text; using (StreamWriter sw = (File.Exists(path)) ? File.AppendText(path) : File.CreateText(path)) { foreach (var line in employeeList.Items) { sw.WriteLine(((Employee)line).FirstName); sw.WriteLine(((Employee)line).LastName); sw.WriteLine(((Employee)line).JobTitle); } }

Además, una cosa a destacar con su código es que está haciendo un montón de desempaquetado innecesario. Si tiene que usar una colección simple (no genérica) como ArrayList , desempaquete el objeto una vez y use la referencia.

Sin embargo, prefiero usar List<> para mis colecciones:

public class EmployeeList : List<Employee>


o:

using(var fileStream = File.Open(path, FileMode.OpenOrCreate, FileAccess.ReadWrite)) { using (StreamWriter sw = new StreamWriter(path, true)) { //... } }