Udostępnij za pośrednictwem


Odczytywanie i zapisywanie w pliku tekstowym przy użyciu języka Visual C#

Ten artykuł ułatwia odczytywanie i zapisywanie w pliku tekstowym przy użyciu języka Visual C#.

Oryginalna wersja produktu: Visual Studio
Oryginalny numer KB: 816149

Podsumowanie

W sekcji Odczytaj plik tekstowy w tym artykule opisano sposób odczytywania pliku tekstowego za pomocą klasy StreamReader. W sekcjach Zapisz plik tekstowy (przykład 1) i Zapisz plik tekstowy (przykład 2) opisano, jak używać klasy StreamWriter do zapisywania tekstu do pliku.

Odczytywanie pliku tekstowego

Poniższy kod używa klasy StreamReader do otwierania, odczytywania i zamykania pliku tekstowego. Aby automatycznie otworzyć plik, do konstruktora klasy StreamReader można przekazać ścieżkę dostępu do pliku tekstowego. Ta metoda ReadLine odczytuje każdy wiersz tekstu i w trakcie odczytu przesuwa wskaźnik pliku do następnego wiersza. Gdy metoda ReadLine dotrze do końca pliku, zwraca odwołanie null. Aby uzyskać więcej informacji, zobacz artykuł Klasa StreamReader.

  1. Utwórz przykładowy plik tekstowy w programie Notatnik. Wykonaj następujące czynności:

    1. Wklej tekst witaj świecie w programie Notatnik.
    2. Zapisz plik jako Przykład.txt.
  2. Uruchom program Microsoft Visual Studio.

  3. W menu Plik wskaż polecenie Nowy, a następnie kliknij opcję Projekt.

  4. Wybierz pozycję Projekty Visual C# w sekcji Rodzaje projektów, a następnie wybierz pozycję Aplikacja konsoli w sekcji Szablony.

  5. Dodaj następujący kod na początku pliku Class1.cs:

    using System.IO;
    
  6. Dodaj do metody Main następujący kod:

    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. W menu Debugowanie wybierz pozycję Rozpocznij, aby skompilować i uruchomić aplikację. Kliknij klawisz ENTER, aby zamknąć okno Konsola. W oknie Konsola wyświetlana jest zawartość pliku Przykład. txt:

    Hello world
    

Zapisywanie pliku tekstowego (przykład 1)

Poniższy kod używa klasy StreamWriter do otwierania, zapisywania i zamykania pliku tekstowego. Podobnie jak w przypadku klasy StreamReader, aby otworzyć plik automatycznie, do konstruktora StreamWriter można przekazać ścieżkę pliku tekstowego. Metoda WriteLine zapisuje w pliku tekstowym cały wiersz tekstu.

  1. Uruchom program Visual Studio.

  2. W menu Plik wskaż polecenie Nowy, a następnie kliknij opcję Projekt.

  3. Wybierz pozycję Projekty Visual C# w sekcji Rodzaje projektów, a następnie wybierz pozycję Aplikacja konsoli w sekcji Szablony.

  4. Dodaj następujący kod na początku pliku Class1.cs:

    using System.IO;
    
  5. Dodaj do metody Main następujący kod:

    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. W menu Debugowanie wybierz pozycję Rozpocznij, aby skompilować i uruchomić aplikację. Ten kod tworzy plik o nazwie Test.txt na dysku C. Otwórz plik Test.txt w edytorze tekstu, takim jak Notatnik. Plik Test.txt zawiera dwa wiersze tekstu:

    Hello World!!
    From the StreamWriter class
    

Zapisywanie pliku tekstowego (przykład 2)

Poniższy kod używa klasy StreamWriter do otwierania, zapisywania i zamykania pliku tekstowego. W przeciwieństwie do poprzedniego przykładu ten kod przekazuje dwa dodatkowe parametry do konstruktora. Pierwszy parametr to ścieżka pliku i nazwa pliku. Drugi parametr, true, określa, że plik jest otwierany w trybie dołączania. Jeśli jako drugi parametr zostanie określona wartość false, zawartość pliku będzie nadpisywana przy każdym uruchomieniu kodu. Trzeci parametr określa Unicode, aby StreamWriter kodował plik w formacie Unicode. Dla trzeciego parametru można również określić następujące metody kodowania:

  • ASC11
  • Unicode
  • UTF7
  • UTF8

Metoda Write jest podobna do metody WriteLine, z tą różnicą, że metoda Write nie osadza automatycznie powrotu karetki ani kombinacji znaków wiersza (CR/LF). Jest ona przydatna, gdy zachodzi potrzeba pisania jednego znaku na raz.

  1. Uruchom program Visual Studio.

  2. W menu Plik wskaż polecenie Nowy, a następnie kliknij Projekt.

  3. Kliknij Projekty Visual C# w sekcji Rodzaje projektów, a następnie kliknij Aplikacja konsoli w sekcji Szablony.

  4. Dodaj następujący kod na początku pliku Class1.cs:

    using System.IO;
    using System.Text;
    
  5. Dodaj do metody Main następujący kod:

    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. W menu Debugowanie wybierz pozycję Rozpocznij, aby skompilować i uruchomić aplikację. Ten kod tworzy plik o nazwie Test1.txt na dysku C. Otwórz plik Test1.txt w edytorze tekstu, takim jak Notatnik. Plik Test1.txt zawiera jeden wiersz tekstu: 0123456789.

Pełna lista kodów do odczytu pliku tekstowego

//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.");
            }
        }
    }
}

Pełna lista kodów do odczytu pliku tekstowego (wersja 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.");
            }
        }
    }
}

Pełna lista kodów do odczytu pliku tekstowego (wersja 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.");
            }
        }
    }
}

Rozwiązywanie problemów

W przypadku wszystkich operacji na plikach dobrą praktyką programistyczną jest umieszczanie kodu wewnątrz bloku try-catch-finally w celu obsługi błędów i wyjątków. W szczególności warto zwolnić obsługę pliku w ostatnim bloku, aby plik nie został zablokowany na czas nieokreślony. Niektóre możliwe błędy to plik, który nie istnieje lub plik, który jest już w użyciu.