Dela via


Använda Visual C# för att läsa från och skriva till en textfil

Den här artikeln hjälper dig att läsa från och skriva till en textfil med hjälp av Visual C#.

Ursprunglig produktversion: Visual Studio
Ursprungligt KB-nummer: 816149

Sammanfattning

I avsnittet Läsa en textfil i den här artikeln beskrivs hur du använder klassen StreamReader för att läsa en textfil. Avsnitten Skriv en textfil (exempel 1) och Skriv en textfil (exempel 2) beskriver hur du använder klassen StreamWriter för att skriva text till en fil.

Läsa en textfil

Följande kod använder klassen StreamReader för att öppna, läsa och stänga textfilen. Du kan överföra sökvägen till en textfil till StreamReader konstruktören så att filen öppnas automatiskt. Metoden ReadLine läser upp varje textrad och flyttar filpekaren till nästa rad i takt med att den läser. När metoden ReadLine når slutet av filen returneras en null-referens. Mer information finns i StreamReader Class.

  1. Skapa en exempeltext-fil i Anteckningar. Följ de här stegen:

    1. Klistra in texten hej världen i Anteckningar.
    2. Spara filen som Sample.txt.
  2. Starta Microsoft Visual Studio.

  3. På Arkiv-menyn pekar du på Nytt och väljer sedan Projekt.

  4. Välj Visuella C#-projekt under Projekttyper och välj sedan Konsolprogram under Mallar.

  5. Lägg till följande kod i början av filen Class1.cs:

    using System.IO;
    
  6. Lägg till följande kod i metoden Main:

    String line;
    try
    {
        //Pass the file path and file name to the StreamReader constructor
        StreamReader sr = new StreamReader("C:\\Sample.txt");
        //Read the first line of text
        line = sr.ReadLine();
        //Continue to read until you reach end of file
        while (line != null)
        {
            //write the line to console window
            Console.WriteLine(line);
            //Read the next line
            line = sr.ReadLine();
        }
        //close the file
        sr.Close();
        Console.ReadLine();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  7. På menyn Felsökning väljer du Start för att sammanställa och köra programmet. Tryck på RETUR för att stänga fönstret Konsol. I konsolfönstret visas innehållet i filen Sample.txt:

    Hello world
    

Skriva en textfil (exempel 1)

I följande kod används klassen StreamWriter för att öppna, skriva och stänga textfilen. På liknande sätt som klassen StreamReader kan du överföra sökvägen till en textfil till StreamWriter konstruktören för att öppna filen automatiskt. Metoden WriteLine skriver en fullständig textrad till textfilen.

  1. Starta Visual Studio.

  2. På Arkiv-menyn pekar du på Nytt och väljer sedan Projekt.

  3. Välj Visuella C#-projekt under Projekttyper och välj sedan Konsolprogram under Mallar.

  4. Lägg till följande kod i början av filen Class1.cs:

    using System.IO;
    
  5. Lägg till följande kod i metoden Main:

    try
    {
        //Pass the filepath and filename to the StreamWriter Constructor
        StreamWriter sw = new StreamWriter("C:\\Test.txt");
        //Write a line of text
        sw.WriteLine("Hello World!!");
        //Write a second line of text
        sw.WriteLine("From the StreamWriter class");
        //Close the file
        sw.Close();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  6. På menyn Felsökning väljer du Start för att sammanställa och köra programmet. Med den här koden skapas en fil med namnet Test.txt på enhet C. Öppna Test.txt i en textredigerare som Anteckningar. Test.txt innehåller två textrader:

    Hello World!!
    From the StreamWriter class
    

Skriva en textfil (exempel 2)

I följande kod används klassen StreamWriter för att öppna, skriva och stänga textfilen. Till skillnad från föregående exempel skickar den här koden ytterligare två parametrar till konstruktören. Den första parametern är filsökvägen och filnamnet på filen. Den andra parametern, true, anger att filen öppnas i läget för att lägga till. Om du anger false för den andra parametern skrivs innehållet i filen över varje gång du kör koden. Den tredje parametern anger Unicode, så att StreamWriter kodar filen i Unicode-format. Du kan också ange följande kodningsmetoder för den tredje parametern:

  • ASC11
  • Unicode
  • UTF7
  • UTF8

Metoden Write liknar metoden WriteLine, förutom att metoden Write inte automatiskt bäddar in en kombination av vagnretur- eller radmatningstecken (CR/LF). Det är användbart när du vill skriva ett tecken i taget.

  1. Starta Visual Studio.

  2. Peka på Nytt på Arkiv-menyn och klicka sedan på Projekt.

  3. Klicka på Visuel C#-projekt under Projekttyper och klicka sedan på Konsolprogram under Mallar.

  4. Lägg till följande kod i början av filen Class1.cs:

    using System.IO;
    using System.Text;
    
  5. Lägg till följande kod i metoden Main:

    Int64 x;
    try
    {
        //Open the File
        StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
    
        //Write out the numbers 1 to 10 on the same line.
        for(x=0; x < 10; x++)
        {
        sw.Write(x);
        }
    
        //close the file
        sw.Close();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  6. På menyn Felsökning väljer du Start för att sammanställa och köra programmet. Med den här koden skapas en fil med namnet Test1.txt på enhet C. Öppna Test1.txt i en textredigerare som Anteckningar. Test1.txt innehåller en enda textrad: 0123456789.

Fullständig kodlistning för att läsa en textfil

//Read a Text File
using System;
using System.IO;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            String line;
            try
            {
                //Pass the file path and file name to the StreamReader constructor
                StreamReader sr = new StreamReader("C:\\Sample.txt");
                //Read the first line of text
                line = sr.ReadLine();
                //Continue to read until you reach end of file
                while (line != null)
                {
                    //write the line to console window
                    Console.WriteLine(line);
                    //Read the next line
                    line = sr.ReadLine();
                }
                //close the file
                sr.Close();
                Console.ReadLine();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Fullständig kodlistning för hur du skriver en textfil (version 1)

//Write a text file - Version-1
using System;
using System.IO;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            try
            {
                //Pass the filepath and filename to the StreamWriter Constructor
                StreamWriter sw = new StreamWriter("C:\\Test.txt");
                //Write a line of text
                sw.WriteLine("Hello World!!");
                //Write a second line of text
                sw.WriteLine("From the StreamWriter class");
                //Close the file
                sw.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Fullständig kodlista för hur du skriver en textfil (version 2)

//Write a text file - Version 2
using System;
using System.IO;
using System.Text;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            Int64 x;
            try
            {
                //Open the File
                StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
                //Writeout the numbers 1 to 10 on the same line.
                for(x=0; x < 10; x++)
                {
                    sw.Write(x);
                }
                //close the file
                sw.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Felsöka

I programmering är det bra att omsluta koden i ett try-catch-finally block för att hantera fel och undantag i alla filmanipuleringar. Mer specifikt kanske du vill släppa referenser för filen i det sista blocket så att filen inte är låst på obestämd tid. Vissa möjliga fel kan vara en fil som inte finns eller en fil som redan används.