it-swarm.com.de

Einfachste Möglichkeit zum Lesen und Schreiben von Dateien

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 strings lesen und schreiben muss.

270

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);
438
vc 74

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:

  • Sie können readtext.Close() anstelle von using verwenden, aber bei Ausnahmen wird file/reader/writer nicht geschlossen
  • Beachten Sie, dass der relative Pfad relativ zum aktuellen Arbeitsverzeichnis ist. Sie können absoluten Pfad verwenden/konstruieren.
  • Fehlendes using/Close ist ein häufiger Grund dafür, "warum keine Daten in die Datei geschrieben werden".
137
Bali C
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");
    }
}
14
Swapnil
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.

10
Ankit Dass

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);
}
9
yazarloo

@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ß!

8
Roland

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);
4
anhoppe

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.

3
SamekaTV

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
}
2
technoman23

Sie suchen nach den Klassen File, StreamWriter und StreamReader.

0
SLaks
     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);
        }      
    }