La manera más fácil de leer y escribir en archivos

Hay muchas formas diferentes de leer y escribir archivos ( archivos de texto , no binarios) en C #.

Solo necesito algo que sea fácil y use la menor cantidad de código, porque voy a trabajar mucho con los archivos en mi proyecto. Solo necesito algo para la string ya que todo lo que necesito es leer y escribir string .

Use File.ReadAllText y File.WriteAllText .

No podría ser más simple …

Ejemplos de MSDN:

 // Create a file to write to. string createText = "Hello and Welcome" + Environment.NewLine; File.WriteAllText(path, createText); // Open the file to read from. string readText = File.ReadAllText(path); 

Además de File.ReadAllText , File.ReadAllLines y File.WriteAllText (y ayudantes similares de la clase File ) que se muestran en otra respuesta , puede usar las clases StreamWriter / StreamReader .

Escribir un archivo de texto:

 using(StreamWriter writetext = new StreamWriter("write.txt")) { writetext.WriteLine("writing in text file"); } 

Leyendo un archivo de texto:

 using(StreamReader readtext = new StreamReader("readme.txt")) { string readMeText = readtext.ReadLine(); } 

Notas:

  • Puede usar readtext.Close() lugar de using , pero no cerrará el archivo / lector / escritor en caso de excepciones
  • Tenga en cuenta que la ruta relativa es relativa al directorio de trabajo actual. Es posible que desee utilizar / construir la ruta absoluta.
  • La falta de using / Close es una razón muy común de “por qué los datos no están escritos en el archivo”.
 FileStream fs = new FileStream(txtSourcePath.Text,FileMode.Open, FileAccess.Read); using(StreamReader sr = new StreamReader(fs)) { using (StreamWriter sw = new StreamWriter(Destination)) { sw.writeline("Your text"); } } 
 using (var file = File.Create("pricequote.txt")) { ........... } using (var file = File.OpenRead("pricequote.txt")) { .......... } 

Simple, fácil y también elimina / limpia el objeto una vez que haya terminado con él.

La forma más fácil de leer un archivo y escribir en un archivo:

 //Read from a file string something = File.ReadAllText("C:\\Rfile.txt"); //Write to a file using (StreamWriter writer = new StreamWriter("Wfile.txt")) { writer.WriteLine(something); } 

@AlexeiLevenkov me señaló otra “manera más fácil”, a saber, el método de extensión . Solo requiere un poco de encoding, luego proporciona la manera más fácil de leer / escribir, además de que ofrece la flexibilidad para crear variaciones de acuerdo a sus necesidades personales. Aquí hay un ejemplo completo:

Esto define el método de extensión en el tipo de string . Tenga en cuenta que lo único que realmente importa es el argumento de función con la palabra clave adicional this , que hace que se refiera al objeto al que está asociado el método. El espacio de nombres y las declaraciones de clase son opcionales.

 using System.IO;//File, Directory, Path namespace Lib { ///  /// Handy string methods ///  public static class Strings { ///  /// Extension method to write the string Str to a file ///  ///  ///  public static void WriteToFile(this string Str, string Filename) { File.WriteAllText(Filename, Str); return; } // of course you could add other useful string methods... }//end class }//end ns 

Esta es la forma de utilizar el string extension method , tenga en cuenta que se refiere automágicamente a la class Strings :

 using Lib;//(extension) method(s) for string namespace ConsoleApp_Sandbox { class Program { static void Main(string[] args) { "Hello World!".WriteToFile(@"c:\temp\helloworld.txt"); return; } }//end class }//end ns 

Nunca lo habría encontrado, pero funciona muy bien, así que quería compartir esto. ¡Que te diviertas!

O bien, si realmente se trata de líneas:

System.IO.File también contiene un método estático WriteAllLines , por lo que podría hacer:

 IList myLines = new List() { "line1", "line2", "line3", }; File.WriteAllLines("./foo", myLines); 

Al leer, es bueno utilizar el control OpenFileDialog para buscar cualquier archivo que desee leer. Encuentra el código a continuación:

No olvide agregar la siguiente instrucción de using para leer archivos: using System.IO;

 private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = File.ReadAllText(openFileDialog1.FileName); } } 

Para escribir archivos, puede usar el método File.WriteAllText .

Está buscando las clases File , StreamWriter y StreamReader .