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 possible, 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.
Utilisez File.ReadAllText et File.WriteAllText .
Cela ne pourrait pas être plus simple ...
Exemples 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);
En plus de File.ReadAllText
, File.ReadAllLines
et File.WriteAllText
(et des aides similaires de la classe File
) indiqués dans une autre réponse vous pouvez utiliser StreamWriter
/ StreamReader
classes.
Écrire un fichier texte:
using(StreamWriter writetext = new StreamWriter("write.txt"))
{
writetext.WriteLine("writing in text file");
}
Lire un fichier texte:
using(StreamReader readtext = new StreamReader("readme.txt"))
{
string readMeText = readtext.ReadLine();
}
Remarques:
readtext.Close()
au lieu de using
, mais le fichier/lecteur/enregistreur ne sera pas fermé en cas d'exception.using
/Close
manquant 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 supprime/nettoie également l'objet une fois que vous avez terminé.
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 extension . Il faut juste un peu de codage, puis le moyen le plus simple et le plus facile de lire/écrire, et la possibilité de créer des variations en fonction de vos besoins personnels. Voici un exemple complet:
Ceci définit la méthode d'extension sur le type string
. Notez que la seule chose qui compte vraiment est l'argument de la fonction avec le mot clé supplémentaire this
, qui le fait se référer à l'objet auquel la méthode est attachée. Les déclarations d'espace de nom 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 automatiquement 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 n'aurais jamais trouvé cela moi-même, mais cela fonctionne très bien, alors je voulais partager cela. S'amuser!
Ou, si vous êtes vraiment sur les lignes:
System.IO.File contient également une méthode statique WriteAllLines , afin que vous puissiez 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 rechercher un fichier à 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
.
Voici les méthodes les plus courantes et les plus couramment utilisées pour écrire et lire des fichiers:
using System.IO;
File.AppendAllText(sFilePathAndName, sTextToWrite);//add text to existing file
File.WriteAllText(sFilePathAndName, sTextToWrite);//will overwrite the text in the existing file. If the file doesn't exist, it will create it.
File.ReadAllText(sFilePathAndName);
Auparavant, au collège, on m'avait appris à utiliser un lecteur/un rédacteur de flux, mais les méthodes Fichier E/S sont moins complexes et nécessitent moins de lignes de code. Vous pouvez taper dans "Fichier". dans votre IDE (assurez-vous d'inclure l'instruction d'importation System.IO) et consultez toutes les méthodes disponibles. Vous trouverez ci-dessous des exemples de méthodes pour lire/écrire des chaînes dans/à partir de fichiers texte (.txt.) À l'aide d'une application Windows Forms.
Ajouter du texte à un fichier existant:
private void AppendTextToExistingFile_Click(object sender, EventArgs e)
{
string sTextToAppend = txtMainUserInput.Text;
//first, check to make sure that the user entered something in the text box.
if (sTextToAppend == "" || sTextToAppend == null)
{MessageBox.Show("You did not enter any text. Please try again");}
else
{
string sFilePathAndName = getFileNameFromUser();// opens the file dailog; user selects a file (.txt filter) and the method returns a path\filename.txt as string.
if (sFilePathAndName == "" || sFilePathAndName == null)
{
//MessageBox.Show("You cancalled"); //DO NOTHING
}
else
{
sTextToAppend = ("\r\n" + sTextToAppend);//create a new line for the new text
File.AppendAllText(sFilePathAndName, sTextToAppend);
string sFileNameOnly = sFilePathAndName.Substring(sFilePathAndName.LastIndexOf('\\') + 1);
MessageBox.Show("Your new text has been appended to " + sFileNameOnly);
}//end nested if/else
}//end if/else
}//end method AppendTextToExistingFile_Click
Obtenez le nom de fichier de l'utilisateur via l'explorateur de fichiers/la boîte de dialogue d'ouverture de fichier (vous en aurez besoin pour sélectionner les fichiers existants).
private string getFileNameFromUser()//returns file path\name
{
string sFileNameAndPath = "";
OpenFileDialog fd = new OpenFileDialog();
fd.Title = "Select file";
fd.Filter = "TXT files|*.txt";
fd.InitialDirectory = Environment.CurrentDirectory;
if (fd.ShowDialog() == DialogResult.OK)
{
sFileNameAndPath = (fd.FileName.ToString());
}
return sFileNameAndPath;
}//end method getFileNameFromUser
Obtenir le texte d'un fichier existant:
private void btnGetTextFromExistingFile_Click(object sender, EventArgs e)
{
string sFileNameAndPath = getFileNameFromUser();
txtMainUserInput.Text = File.ReadAllText(sFileNameAndPath); //display the text
}
Vous recherchez les classes File
, StreamWriter
et StreamReader
.
class Program
{
public static void Main()
{
//To write in a txt file
File.WriteAllText("C:\\Users\\HP\\Desktop\\c#file.txt", "Hello and Welcome");
//To Read from a txt file & print on console
string copyTxt = File.ReadAllText("C:\\Users\\HP\\Desktop\\c#file.txt");
Console.Out.WriteLine("{0}",copyTxt);
}
}