Es gibt viele Möglichkeiten, Dateien ( Textdateien , nicht Binärdateien) in C # zu lesen und zu schreiben.
Ich brauche nur etwas, das einfach ist und wenig Code benötigt, da ich in meinem Projekt viel mit Dateien arbeite. Ich brauche nur etwas für string
, da ich nur string
s lesen und schreiben muss.
Verwenden Sie File.ReadAllText und File.WriteAllText .
Einfacher geht es nicht ...
MSDN-Beispiele:
// 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);
Neben File.ReadAllText
, File.ReadAllLines
und File.WriteAllText
(und ähnlichen Helfern der File
-Klasse) in einer anderen Antwort können Sie StreamWriter
/ StreamReader
-Klassen verwenden.
Schreiben einer Textdatei:
using(StreamWriter writetext = new StreamWriter("write.txt"))
{
writetext.WriteLine("writing in text file");
}
Lesen einer Textdatei:
using(StreamReader readtext = new StreamReader("readme.txt"))
{
string readMeText = readtext.ReadLine();
}
Anmerkungen:
readtext.Close()
anstelle von using
verwenden, aber bei Ausnahmen wird file/reader/writer nicht geschlossenusing
/Close
ist ein häufiger Grund dafür, "warum keine Daten in die Datei geschrieben werden".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"))
{
..........
}
Einfach, einfach und entsorgt/entfernt das Objekt, sobald Sie damit fertig sind.
Der einfachste Weg, aus einer Datei zu lesen und in eine Datei zu schreiben:
//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 wies mich auf einen anderen "einfachsten Weg" hin, nämlich die Erweiterungsmethode . Es dauert nur ein wenig Codierung, bietet dann die absolut einfachste Methode zum Lesen und Schreiben und bietet die Flexibilität, Variationen entsprechend Ihren persönlichen Bedürfnissen zu erstellen. Hier ist ein vollständiges Beispiel:
Dies definiert die Erweiterungsmethode für den Typ string
. Beachten Sie, dass das einzige wichtige Argument das Funktionsargument mit dem zusätzlichen Schlüsselwort this
ist, das es auf das Objekt verweist, an das die Methode angehängt ist. Die Namespace- und Klassendeklarationen sind optional.
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
So verwenden Sie den string extension method
, beachten Sie, dass er sich automatisch auf den class Strings
bezieht:
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
Ich hätte das selbst nie gefunden, aber es funktioniert großartig, deshalb wollte ich es teilen. Habe Spaß!
Oder wenn Sie wirklich über Linien reden:
System.IO.File enthält auch eine statische Methode WriteAllLines , so dass Sie Folgendes tun könnten:
IList<string> myLines = new List<string>()
{
"line1",
"line2",
"line3",
};
File.WriteAllLines("./foo", myLines);
Beim Lesen empfiehlt es sich, das OpenFileDialog-Steuerelement zu verwenden, um zu jeder Datei zu navigieren, die Sie lesen möchten. Den Code finden Sie unten:
Vergessen Sie nicht, die folgende using
-Anweisung zum Lesen von Dateien hinzuzufügen: using System.IO;
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = File.ReadAllText(openFileDialog1.FileName);
}
}
Zum Schreiben von Dateien können Sie die Methode File.WriteAllText
verwenden.
Dies sind die besten und am häufigsten verwendeten Methoden zum Schreiben und Lesen von Dateien:
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);
Der alte Weg, den ich im College gelernt habe, war die Verwendung von Stream-Reader/Stream-Schreiber, aber die File -E/A-Methoden sind weniger unhandlich und erfordern weniger Codezeilen. Sie können "Datei" eingeben. in Ihrer IDE (stellen Sie sicher, dass Sie die System.IO-Importanweisung enthalten) und sehen Sie alle verfügbaren Methoden. Im Folgenden finden Sie Beispielmethoden zum Lesen/Schreiben von Zeichenfolgen in/aus Textdateien (.txt.) Mithilfe einer Windows Forms-App.
Text an eine vorhandene Datei anhängen:
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
Ermitteln Sie den Dateinamen vom Benutzer über den Datei-Explorer/den Dateidialog (Sie benötigen diesen, um vorhandene Dateien auszuwählen).
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
Holen Sie sich Text aus einer vorhandenen Datei:
private void btnGetTextFromExistingFile_Click(object sender, EventArgs e)
{
string sFileNameAndPath = getFileNameFromUser();
txtMainUserInput.Text = File.ReadAllText(sFileNameAndPath); //display the text
}
Sie suchen nach den Klassen File
, StreamWriter
und 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);
}
}