CodeBlanks Logo Icon CodeBlanks

Dosya okuma

std::fs::read_to_string ile dosya okumayı öğrenirsin.

Dosya okuma

Bir dosyanın tamamını metin olarak okumanın en kısa yolu std::fs::read_to_string'dir. Dosya bulunamayabilir ya da UTF-8 olmayabilir; bu yüzden io::Result<String> döndürür:

use std::fs;
use std::io;

fn main() -> io::Result<()> {
    let icerik = fs::read_to_string("notlar.txt")?;
    println!("{} satır", icerik.lines().count());
    Ok(())
}

main'in io::Result<()> döndürmesi ? kullanmayı sağlar; hata olursa program mesajla ve sıfır olmayan kodla çıkar.

Yollar ve geçici klasör

Göreli yollar programın çalıştığı klasöre göre çözülür. Platformdan bağımsız yol kurmak için Path/PathBuf ve join kullanılır. Alıştırmalarda geçici klasörde çalışacağız:

use std::env;
use std::path::PathBuf;

let yol: PathBuf = env::temp_dir().join("rust_ders.txt");
println!("{}", yol.display());

display(), yolu yazdırılabilir bir biçime çevirir; yollar her zaman geçerli UTF-8 olmak zorunda değildir.

Uygulama Satır say

main io::Result<()> döndürsün. Geçici klasörde rust_ders.txt yolunu kur, fs::write ile "elma\narmut\n" yaz, fs::read_to_string ile oku ve N satır yazdır.

Başlangıç kodu

main.rs
use std::env;
use std::fs;
use std::io;

fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
use std::env;
use std::fs;
use std::io;

fn main() -> io::Result<()> {
    let yol = env::temp_dir().join("rust_ders.txt");
    fs::write(&yol, "elma\narmut\n")?;
    let icerik = fs::read_to_string(&yol)?;
    println!("{} satır", icerik.lines().count());
    Ok(())
}

Beklenen çıktı

2 satır

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 İkili bir dosyayı (resim gibi) okumak için hangisi kullanılır?

  • fs::read_to_string
  • fs::open_text
  • fs::lines
  • fs::read → Vec<u8> Doğru cevap

Açıklama: read_to_string geçersiz UTF-8'de hata verir; ham baytlar için fs::read kullanılır.

2 Tümünü oku

Soru
let icerik = fs::____("notlar.txt")?;
Cevap
let icerik = fs::read_to_string("notlar.txt")?;

Açıklama: read_to_string dosyanın tamamını String olarak verir.

3 Fonksiyon ve dönüşü

Kavram Anlamı
fs::read_to_string io::Result<String>
fs::read io::Result<Vec<u8>>
env::temp_dir() PathBuf
yol.display() Yazdırılabilir yol

Orta seviye bölümündeki tüm dersler