IRONSOFTWAREHOME

Odczyt i zapis plików w C#

C# Read and Write File

Tim Corey

24m 34s

Operacje wejścia/wyjścia (I/O) plików w C# są nieodłączną częścią wielu aplikacji programowych, pozwalając deweloperom na efektywny odczyt i zapis plików. Bez wzgledu na to, czy przechowujesz dane, rejestrujesz zdarzenia aplikacji, czy przetwarzasz duza ilosc tekstu lub danych binarnych, C# oferuje solidne narzędzia do pracy z plikami. W filmie Tima Coreya, "C# Data Access: Text Files", oferuje szczegółowy przewodnik po tych operacjach na plikach, skupiajac sie na użyciu plików tekstowych do przechowywania i pobierania danych. Niniejszy artykuł ma na celu podsumowanie kluczowych pojec i technik, ktore Tim omawia w filmie, dostarczając praktycznych wskazowek dotyczących operacji I/O plików w C#.

Wprowadzenie

W C#, operacje wejscia i wyjscia na plikach sa niezbędne do odczytu i zapisu plików tekstowych. Klasa File zapewnia statyczne metody do interakcji z istniejącymi plikami lub tworzenia nowych. StreamReader i StreamWriter są często używane do odczytu i zapisu plików. StreamReader odczytuje pliki linia po linii, umożliwiając dostęp do każdej linii tekstu lub tablicy napisów. Można również użyć pętli while, aby efektywnie odczytać większe pliki. Klasa StreamWriter jest używana do zapisu danych do pliku, wspierając zapis łańcuchów i tablic. Można jej użyć do dodawania tekstu do istniejącego pliku lub nadpisania całego pliku. Metody takie jak WriteLine i WriteText umożliwiają łatwą manipulację danymi w plikach tekstowych.

Te operacje zazwyczaj są wykonywane w metodzie static void Main, gdzie definiuje się ścieżkę pliku. Na przykład, można określić nazwę pliku i użyć StreamWriter do zapisu pojedynczego łańcucha lub całej tablicy łańcuchów. Instrukcja using zapewnia, że plik jest prawidłowo zamykany po operacjach, zapobiegając wyciekom zasobów. StreamReader może być również używane do odczytu plików linia po linii, a wyjątki mogą być obsługiwane, aby zarządzać potencjalnymi błędami, gdy plik nie istnieje lub nie można go uzyskać dostępu. Te możliwosci I/O plików czynia C# doskonalym wyborem do pracy z plikami wydajnie i efektywnie.

Tim wprowadza temat, podkreślajac prostote odczytu i zapisu plików tekstowych w C#. Demonstruje, jak kilka linijek kodu może wykonac te zadania, czyniac pliki tekstowe realna opcja do przechowywania danych.

Tworzenie aplikacji konsolowej demonstracyjnej

Tim rozpoczyna od stworzenia nowej aplikacji konsolowej nazwanej "TextFileDataAccessDemo" używajac Visual Studio.

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;

namespace TextFileDataAccessDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadLine(); // Keeps the console window open to view the output
        }
    }
}

Wyjaśnia on użycie Console.ReadLine, aby utrzymać okno konsoli otwarte, umożliwiając użytkownikom zobaczenie wyniku.

Odczyt z pliku tekstowego

Tim pokazuje, jak odczytać plik tekstowy za pomocą metody File.ReadAllLines. Pokazuje, jak sobie radzic ze ścieżkami plików i używac literałow ciagow, aby uniknąć znakow ucieczki.

string filePath = @"C:\demos\test.txt";
List<string> lines = File.ReadAllLines(filePath).ToList();

Metoda File.ReadAllLines odczytuje wszystkie linie z określonego pliku i zwraca je jako tablicę łańcuchów. Tim konwertuje te tablice na liste dla łatwiejszej manipulacji.

Zapisywanie do pliku tekstowego

Tim wyjaśnia, jak zapisać dane do pliku tekstowego przy użyciu metody File.WriteAllLines. Demonstruje, jak dodawac nowe linie do listy i zapisywac zaktualizowana liste z powrotem do pliku.

lines.Add("Sue,Storm,WWIStorm.com");
File.WriteAllLines(filePath, lines);

Ten kod dodaje nowy wpis do listy i zapisuje cała liste z powrotem do pliku.

Tworzenie modelu danych i jego wypelnianie z pliku

Tim tworzy klasę Person, aby reprezentować strukturę danych dla każdego wpisu w pliku tekstowym.

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string URL { get; set; }
}

Następnie odczytuje plik i wypełnia listę obiektów Person.

List<Person> people = new List<Person>();
List<string> lines = File.ReadAllLines(filePath).ToList();

foreach (string line in lines)
{
    string[] entries = line.Split(',');
    Person newPerson = new Person
    {
        FirstName = entries[0],
        LastName = entries[1],
        URL = entries[2]
    };
    people.Add(newPerson);
}

Ten kod odczytuje każdą linię, dzieli ją przecinkami i tworzy obiekt Person z wyodrębnionymi danymi.

Interpolacja ciagow

Tim wprowadza interpolacje ciagow, funkcje w C# 6.0, która upraszcza proces łączenia zmiennych i ciagow. Ta metoda używa symbolu $ przed łańcuchem oraz nawiasów klamrowych {} do osadzania zmiennych bezpośrednio w łańcuchu.

foreach (var person in people)
{
    Console.WriteLine($"{person.FirstName} {person.LastName}: {person.URL}");
}

Ta składnia jest bardziej zwięzła i efektywna w porównaniu do tradycyjnej konkatenacji za pomocą operatora +.

C# Read Write File

Walidacja danych

Tim podkreśla znaczenie walidacji danych podczas odczytu z pliku tekstowego. Zwraca uwage na ryzyko zakladania struktury danych i zaleca sprawdzanie dlugosci podzielonych wpisow.

foreach (string line in lines)
{
    string[] entries = line.Split(',');
    if (entries.Length == 3)
    {
        Person newPerson = new Person
        {
            FirstName = entries[0],
            LastName = entries[1],
            URL = entries[2]
        };
        people.Add(newPerson);
    }
    else
    {
        // Handle error
        Console.WriteLine("Invalid data format.");
    }
}

To zapewnia, ze tylko linie z poprawna liczba wpisow sa przetwarzane, unikajac potencjalnych błędow w czasie wykonywania.

Dodawanie obiektow do listy

Tim pokazuje, jak dodać nowe obiekty do listy. Używa anonimowej instancji klasy Person, aby dodać nową osobę do listy.

people.Add(new Person { FirstName = "Greg", LastName = "Jones", URL = "WOWT.com" });

To tworzy i inicjalizuje nowy obiekt Person w jednej linii, który jest następnie dodawany do listy people.

Zapisywanie danych z powrotem do pliku tekstowego

Tim wyjaśnia, jak zapisać listę obiektów Person z powrotem do pliku tekstowego. Konwertuje listę obiektów Person na listę łańcuchów, gdzie każdy łańcuch reprezentuje linię w pliku.

List<string> output = new List<string>();
foreach (var person in people)
{
    output.Add($"{person.FirstName},{person.LastName},{person.URL}");
}
File.WriteAllLines(filePath, output);

Ten kod iteruje po liście people, tworzy łańcuch CSV dla każdego obiektu Person i zapisuje listę łańcuchów do pliku.

Wnioski

Szczegolowy przewodnik Tima Coreya na temat operacji I/O plików w C# dostarcza praktycznych wskazowek dotyczących odczytu i zapisu plików tekstowych. Podazajac za jego przykładami, deweloperzy mogą skutecznie zarządzać danymi za pomoca plików tekstowych i wdrazac solidne rozwiązania do przechowywania danych. Dla glebszego zrozumienia i praktycznego doswiadczenia, goraco zachecam do obejrzenia filmu Tima Coreya, w ktorym glebiej omawia te pojecia z przykładami ze świata rzeczywistego.

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta