Altbilgi içeriğine atla
Iron Academy Logo
C# Öğrenin
C# Öğrenin

Diğer Kategoriler

C# Dosya Okuma ve Yazma

Tim Corey
24d 34s

C#'ta dosya giriş ve çıkış (I/O) işlemleri, birçok yazılım uygulamasının önemli bir parçasını oluşturur ve geliştiricilerin dosyaları verimli bir şekilde okumalarına ve yazmalarına olanak tanır. Verileri depolamak, uygulama olaylarını kaydetmek veya büyük miktarda metin veya ikili veriyi işleme durumlarında olsun, C#, dosyalarla çalışmak için sağlam araçlar sağlar. Tim Corey'nin "C# Veri Erişimi: Metin Dosyaları" videosunda, metin dosyalarının hem veri depolama hem de alma için nasıl kullanılacağını odaklanarak bu dosya işlemlerine yönelik detaylı bir yürütüm sunar. Bu makale, video içinde Tim'in ele aldığı ana kavramları ve teknikleri özetlemeyi amaçlamakta, C#'ta dosya I/O işlemlerine dair pratik içgörüler sağlamaktadır.

Giriş

C#'ta, dosya giriş ve çıkış işlemleri, metin dosyalarından okuma ve yazma için esastır. File sınıfı, mevcut dosyalarla etkileşimde bulunmak veya yeni dosyalar oluşturmak için statik yöntemler sağlar. StreamReader ve StreamWriter dosya okuma ve yazmada yaygın olarak kullanılır. StreamReader, dosyaları satır satır okur ve her bir metin satırına veya bir dizi string'e erişmenizi sağlar. Daha büyük dosyaları verimli bir şekilde okumak için while döngüsünü de kullanabilirsiniz. StreamWriter sınıfı, verileri dosyaya yazmak için kullanılır ve string'ler ve diziler yazmayı destekler. Mevcut bir dosyaya metin eklemek veya tüm dosyanın üzerine yazmak için kullanılabilir. WriteLine ve WriteText gibi yöntemler, metin dosyalarında kolay veri manipülasyonu sağlar.

Bu işlemler, dosya yolunu tanımladığınız static void Main yöntemi içerisinde genellikle gerçekleştirilir. Örneğin, bir dosya adı belirleyebilir ve tek bir string veya bir dizi string yazmak için StreamWriter kullanabilirsiniz. using ifadesi, dosyanın işlemlerden sonra düzgün bir şekilde kapanmasını sağlayarak kaynak sızıntılarını önler. StreamReader, dosyaları satır satır okumak için de kullanılabilir ve dosya mevcut olmadığında veya erişilemediğinde oluşabilecek hataları yönetmek için istisnalar ele alınabilir. Bu dosya I/O özellikleri C#'ı dosya ile çalışmak için verimli ve etkili bir seçim haline getirir.

Tim, C#'ta metin dosyalarından okumanın ve yazmanın basitliğini vurgulayarak konuyu tanıtır. Birkaç satır kod kullanarak bu görevleri yerine getirebileceğini gösterir, metin dosyalarını veri depolama için geçerli bir seçenek haline getirir.

Demo Konsol Uygulaması Oluşturma

Tim, Visual Studio kullanarak "TextFileDataAccessDemo" adlı yeni bir konsol uygulaması oluşturarak başlar.

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

Konsol penceresini açık tutmak için Console.ReadLine kullanımını açıklıyor, böylece kullanıcılar çıktıyı görebilir.

Bir Metin Dosyasından Okuma

Tim, File.ReadAllLines yöntemini kullanarak bir metin dosyasını nasıl okuyacağını göstermektedir. Dosya yollarını nasıl yöneteceğini ve kaçış karakterlerinden kaçınmak için string literallerini nasıl kullanacağını gösteriyor.

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

File.ReadAllLines yöntemi, belirli bir dosyadan tüm satırları okur ve onları bir string dizisi olarak döndürür. Tim, bu diziyi daha kolay işlemek için bir listeye dönüştürüyor.

Bir Metin Dosyasına Yazma

Tim, verileri bir metin dosyasına nasıl yazacağını File.WriteAllLines yöntemi ile açıklar. Listeye yeni satırların nasıl ekleneceğini ve güncellenmiş listenin dosyaya nasıl geri yazılacağını gösteriyor.

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

Bu kod, listeye yeni bir giriş ekler ve tüm listeyi tekrar dosyaya yazar.

Bir Veri Modeli Oluşturma ve Bir Dosyadan Doldurma

Tim, metin dosyasındaki her giriş için veri yapısını temsil eden bir Person sınıfı oluşturur.

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

Daha sonra dosyayı okur ve Person nesnelerinden oluşan bir listeyi doldurur.

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

Bu kod, her satırı okur, virgüllerle böler ve çıkarılan verilerle bir Person nesnesi oluşturur.

String Enterpolasyonu

Tim, C# 6.0'da değişkenler ve dizgileri birleştirme sürecini basitleştiren bir özellik olan dizgi interpolasyonunu tanıtıyor. Bu yöntem, string öncesinde $ sembolü ve değişkenleri direkt olarak string içinde gömmek için kıvırcık parantezler {} kullanır.

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

Bu sözdizimi, geleneksel birleştirme ile karşılaştırıldığında, + operatörünü kullanarak, daha öz ve etkilidir.

C# Dosya Okuma ve Yazma

Veri Doğrulama

Tim, bir metin dosyasından veri okurken verinin doğrulanmasının önemini vurgular. Veri yapısını varsaymanın risklerine dikkat çeker ve bölünmüş girişlerin uzunluğunu kontrol etmeyi önerir.

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

Bu, yalnızca doğru sayıda girişe sahip satırların işlenmesini sağlar ve olası çalışma zamanı hatalarını önler.

Bir Listeye Nesne Ekleme

Tim, listeye yeni nesneler eklemeyi nasıl göstereceğini açıklar. Bir Person sınıfının isimsiz bir örneğini kullanarak listeye yeni bir kişi ekler.

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

Bu, tek bir satırda yeni bir Person nesnesi oluşturur ve başlatır, ardından people listesine eklenir.

Verileri Bir Metin Dosyasına Geri Yazma

Tim, Person nesnelerinden oluşan listeyi metin dosyasına geri yazmayı açıklar. Person nesnelerden oluşan listeyi string'lerden oluşan bir listeye dönüştürür, burada her string, dosyada bir satırı temsil eder.

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

Bu kod people listesini döner, her Person nesnesi için bir CSV string'i oluşturur ve bu listeden oluşan string'leri dosyaya yazar.

Sonuç

Tim Corey'nin C# dilinde dosya I/O işlemleri üzerine ayrıntılı rehberi, metin dosyalarından okuma ve yazma işlemleri konusunda pratik bilgiler sunar. Onun örneklerini takip ederek, geliştiriciler, metin dosyalarını kullanarak verileri etkili bir şekilde yönetebilir ve sağlam veri depolama çözümleri uygulayabilirler. Daha derin bir anlayış ve uygulamalı bir öğrenme deneyimi için, Tim Corey'nin videosunu izlemenizi özellikle tavsiye ederim. Orada, bu kavramlara gerçek dünya örnekleriyle daha derinlemesine dalıyor.

Hero Worlddot related to C# Dosya Okuma ve Yazma
Hero Affiliate related to C# Dosya Okuma ve Yazma

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js üzerinde çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara