Dosya okuma
- Rust kursu
- Orta seviye
- Ders 89/115
- 4 dk
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
use std::env;
use std::fs;
use std::io;
fn main() {
// buraya yaz
}Örnek çözüm
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
let icerik = fs::____("notlar.txt")?;
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 |