Moyen le plus simple de lire et d'écrire dans des fichiers
Il y a beaucoup de façons différentes de lire et d'écrire des fichiers ( fichiers texte , pas binaires) en C#.
J'ai juste besoin de quelque chose de facile et qui utilise le moins de code, car je vais beaucoup travailler avec des fichiers dans mon projet. J'ai seulement besoin de quelque chose pour string
puisque tout ce dont j'ai besoin est de lire et d'écrire string
s.
9 réponses
Utilisez Le Fichier .ReadAllText et Fichier.WriteAllText .
Il ne pouvait pas être plus simple...
MSDN exemples:
// 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);
En plus de File.ReadAllText
, File.ReadAllLines
, et File.WriteAllText
(et des aides à partir de File
classe) indiqué dans une autre réponse, vous pouvez utiliser StreamWriter
/StreamReader
des classes.
Écriture d'un fichier texte:
using(StreamWriter writetext = new StreamWriter("write.txt"))
{
writetext.WriteLine("writing in text file");
}
Lecture d'un fichier texte:
using(StreamReader readtext = new StreamReader("readme.txt"))
{
string readMeText = readtext.ReadLine();
}
Notes:
- Vous pouvez utiliser
readtext.Close()
au lieu deusing
, mais il ne sera pas fermer le fichier/lecteur/enregistreur en cas d'exceptions - sachez que le chemin relatif est relatif au travail en cours répertoire. Vous pouvez utiliser / construire un chemin absolu.
- manquant
using
/Close
est une raison très courante de "pourquoi les données ne sont pas écrites dans un fichier".
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, facile et dispose/nettoie également l'objet une fois que vous en avez terminé avec lui.
Le moyen le plus simple de lire à partir d'un fichier et d'écrire dans un fichier:
//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 m'a indiqué un autre "moyen le plus simple" à savoir la méthode d'extension . Il faut juste un peu de codage, puis fournit la meilleure façon absolue de lire / écrire, plus il offre la flexibilité de créer des variations en fonction de vos besoins personnels. Voici un exemple complet:
Définit la méthode d'extension sur le type string
. Notez que la seule chose qui compte vraiment est l'argument de fonction supplémentaire mot-clé this
, qui fait référence à l'objet la méthode est attaché. Les déclarations d'espace de noms et de classe sont facultatives.
using System.IO;//File, Directory, Path
namespace Lib
{
/// <summary>
/// Handy string methods
/// </summary>
public static class Strings
{
/// <summary>
/// Extension method to write the string Str to a file
/// </summary>
/// <param name="Str"></param>
/// <param name="Filename"></param>
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
Voici comment utiliser le string extension method
, notez qu'il se réfère automagiquement au 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
Je ne l'aurais jamais trouvé moi-même, mais cela fonctionne très bien, alors je voulais partager cela. Amuse-toi bien!
Ou, si vous êtes vraiment sur les lignes:
System. IO. File contient également une méthode statique WriteAllLines , donc vous pouvez faire:
IList<string> myLines = new List<string>()
{
"line1",
"line2",
"line3",
};
File.WriteAllLines("./foo", myLines);
Il est bon lors de la lecture d'utiliser le contrôle OpenFileDialog pour parcourir n'importe quel fichier que vous voulez lire. Trouvez le code ci-dessous:
N'oubliez pas d'ajouter l'instruction using
suivante pour lire les fichiers: using System.IO;
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = File.ReadAllText(openFileDialog1.FileName);
}
}
Pour écrire des fichiers vous pouvez utiliser la méthode File.WriteAllText
.