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:
readtext.Close()
lugar de using
, pero no cerrará el archivo / lector / escritor en caso de excepciones 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
.