C++ Dosya İşleme: Dosyaları Açma, Yazma, Okuma ve Kapatma C++

Dosya işleme nedir? C++?

Dosyalar verileri kalıcı olarak bir depolama cihazında saklar. Dosya işleme ile bir programın çıktısı bir dosyada saklanabilir. Dosya içerisindeyken veriler üzerinde çeşitli işlemler yapılabilir.

Bir akış, giriş/çıkış işlemlerinin gerçekleştirildiği bir aygıtın soyutlamasıdır. Bir akışı, belirsiz uzunluktaki karakterlerin bir hedefi veya kaynağı olarak temsil edebilirsiniz. Bu, kullanımlarına göre belirlenecektir. C++ size dosya işleme yöntemleriyle birlikte gelen bir kitaplık sağlar. Bunu tartışalım.

Fstream Kütüphanesi

Fstream kütüphanesi şunları sağlar: C++ dosyalarla çalışmak için üç sınıfa sahip programcılar. Bu sınıflar şunları içerir:

  • akış– Bu sınıf bir çıkış akışını temsil eder. Dosya oluşturmak ve dosyalara bilgi yazmak için kullanılır.
  • ifstream– Bu sınıf bir giriş akışını temsil eder. Veri dosyalarından bilgi okumak için kullanılır.
  • f akışı– Bu sınıf genellikle bir dosya akışını temsil eder. Ofstream/ifstream yetenekleriyle birlikte gelir. Bu, dosya oluşturma, dosyalara yazma, veri dosyalarından okuma yeteneğine sahip olduğu anlamına gelir.

Aşağıdaki görsel bunu anlamayı kolaylaştırıyor:

fstream kütüphanesi
fstream kütüphanesi

Fstream kütüphanesinin yukarıdaki sınıflarını kullanmak için onu başlık dosyası olarak programınıza dahil etmeniz gerekir. Elbette #include önişlemci direktifini kullanacaksınız. Ayrıca iostream başlık dosyasını da eklemeniz gerekir.

Dosyalar Nasıl Açılır

Bir dosya üzerinde herhangi bir işlem yapmadan önce onu açmalısınız. Dosyaya yazmanız gerekiyorsa fstream veya ofstream nesnelerini kullanarak açın. Yalnızca dosyadan okumanız gerekiyorsa ifstream nesnesini kullanarak açın.

Üç nesne, yani fstream, ofstream ve ifstream, içlerinde tanımlanmış open() işlevine sahiptir. İşlev şu sözdizimini alır:

open (file_name, mode);
  • file_name parametresi açılacak dosyanın adını belirtir.
  • Mod parametresi isteğe bağlıdır. Aşağıdaki değerlerden herhangi birini alabilir:
Özellik Açıklama
ios:: uygulama Ekleme modu. Dosyaya gönderilen çıktı dosyaya eklenir.
ios::ate Çıktı için dosyayı açar, ardından okuma ve yazma kontrolünü dosyanın sonuna taşır.
ios::içinde Dosyayı okumak için açar.
ios::dışarı Dosyayı yazmak için açar.
ios::trunc Bir dosya mevcutsa, dosya öğeleri açılmadan önce kesilmelidir.

Aynı anda iki modu kullanmak mümkündür. | kullanarak bunları birleştirirsiniz. (VEYA) operatörü.

Örnek 1:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file", ios::out);
	if (!my_file) {
		cout << "File not created!";
	}
	else {
		cout << "File created successfully!";
		my_file.close(); 
	}
	return 0;
}

Çıktı:

Dosyaları Aç

İşte kodun ekran görüntüsü:

Dosyaları Aç

Kod Açıklaması:

  1. İşlevlerini kullanmak için iostream başlık dosyasını programa ekleyin.
  2. Sınıflarını kullanmak için fstream başlık dosyasını programa ekleyin.
  3. Sınıflarını çağırmadan kullanmak için std ad alanını kodumuza ekleyin.
  4. Main() işlevini çağırın. Program mantığı kendi bünyesinde gitmelidir.
  5. fstream sınıfından bir nesne oluşturun ve ona my_file adını verin.
  6. Yeni bir dosya oluşturmak için yukarıdaki nesneye open() işlevini uygulayın. Çıkış modu dosyaya yazmamızı sağlar.
  7. Dosya oluşturmanın başarısız olup olmadığını kontrol etmek için if ifadesini kullanın.
  8. Dosya oluşturulmadıysa konsolda yazdırılacak mesaj.
  9. If ifadesinin gövdesinin sonu.
  10. Dosya oluşturulduysa ne yapılacağını belirtmek için else ifadesini kullanın.
  11. Dosya oluşturulduysa konsolda yazdırılacak mesaj.
  12. Dosyayı kapatmak için nesneye close() işlevini uygulayın.
  13. else ifadesinin gövdesinin sonu.
  14. Başarılı bir şekilde tamamlanırsa programın değeri döndürmesi gerekir.
  15. main() işlev gövdesinin sonu.

Dosyalar Nasıl Kapatılır

Birkez C++ program sona erer, otomatik olarak

  • dereleri temizliyor
  • ayrılan belleği serbest bırakır
  • açılan dosyaları kapatır.

Ancak bir programcı olarak, program sonlandırılmadan önce açık dosyaları kapatmayı öğrenmelisiniz.

Fstream, ofstream ve ifstream nesneleri, dosyaları kapatmak için close() işlevine sahiptir. İşlev şu sözdizimini alır:

void close();

Dosyalara Nasıl Yazılır

Doğrudan cihazınızdan dosyaya yazabilirsiniz. C++ program. Bunun için akış ekleme operatörünü (<<) kullanırsınız. Dosyaya yazılacak metin çift tırnak işaretleri içine alınmalıdır.

Bunu gösterelim.

Örnek 2:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file.txt", ios::out);
	if (!my_file) {
		cout << "File not created!";
	}
	else {
		cout << "File created successfully!";
		my_file << "Guru99";
		my_file.close();
	}
	return 0;
}

Çıktı:

Dosyalara Nasıl Yazılır

İşte kodun ekran görüntüsü:

Dosyalara Nasıl Yazılır

Kod Açıklaması:

  1. İşlevlerini kullanmak için iostream başlık dosyasını programa ekleyin.
  2. Sınıflarını kullanmak için fstream başlık dosyasını programa ekleyin.
  3. Sınıflarını çağırmadan kullanmak için programa std ad alanını ekleyin.
  4. main() fonksiyonunu çağırın. Program mantığı bu fonksiyonun gövdesine eklenmelidir.
  5. fstream sınıfının bir örneğini oluşturun ve ona my_file adını verin.
  6. my_file.txt adında yeni bir dosya oluşturmak için open() işlevini kullanın. Dosya, içine yazmak için çıkış modunda açılacaktır.
  7. Dosyanın açılıp açılmadığını kontrol etmek için if ifadesini kullanın.
  8. Dosya açılmazsa konsolda yazdırılacak metin.
  9. If ifadesinin gövdesinin sonu.
  10. Dosya oluşturulduysa ne yapılacağını belirtmek için else ifadesini kullanın.
  11. Dosya oluşturulduysa konsolda yazdırılacak metin.
  12. Oluşturulan dosyaya bir miktar metin yazın.
  13. Dosyayı kapatmak için close() işlevini kullanın.
  14. else ifadesinin gövdesinin sonu.
  15. Program başarılı bir şekilde tamamlandıktan sonra değeri döndürmelidir.
  16. Main() işlevinin gövdesinin sonu.

Dosyalardan Nasıl Okunur?

Dosyalardaki bilgileri cihazınıza okuyabilirsiniz. C++ program. Bu, akış çıkarma operatörü (>>) kullanılarak mümkündür. Operatörü, klavyeden kullanıcı girdisini okumak için kullandığınız şekilde kullanırsınız. Ancak, cin nesnesini kullanmak yerine, ifstream/fstream nesnesini kullanırsınız.

Örnek 3:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file.txt", ios::in);
	if (!my_file) {
		cout << "No such file";
	}
	else {
		char ch;

		while (1) {
			my_file >> ch;
			if (my_file.eof())
				break;

			cout << ch;
		}

	}
	my_file.close();
	return 0;
}

Çıktı:

Dosyalardan Oku

Böyle bir dosya yok

İşte kodun ekran görüntüsü:

Dosyalardan Oku

Kod Açıklaması:

  1. İşlevlerini kullanmak için iostream başlık dosyasını programa ekleyin.
  2. Sınıflarını kullanmak için fstream başlık dosyasını programa ekleyin.
  3. Sınıflarını çağırmadan kullanmak için programa std ad alanını ekleyin.
  4. main() fonksiyonunu çağırın. Program mantığı bu fonksiyonun gövdesine eklenmelidir.
  5. fstream sınıfının bir örneğini oluşturun ve ona my_file adını verin.
  6. my_file.txt adında yeni bir dosya oluşturmak için open() işlevini kullanın. Dosya, okuma için in modunda açılacaktır.
  7. Dosyanın mevcut olup olmadığını kontrol etmek için bir if ifadesi kullanın.
  8. Dosya bulunamazsa konsolda yazdırılacak metin.
  9. If ifadesinin gövdesinin sonu.
  10. Dosya bulunursa ne yapılacağını belirtmek için else ifadesini kullanın.
  11. Hat için bir karakter değişkeni ch adında
  12. Hat için bir döngü sırasında dosya içerikleri üzerinde yineleme yapmak için.
  13. Dosyanın içeriğini ch değişkenine yazın/depolayın.
  14. Sona ulaşılmazsa derleyicinin dosyadan okumaya devam etmesini sağlamak için dosyanın sonu olan bir if koşulu ve eof() işlevi kullanın.
  15. Sona ulaşıldığında dosyadan okumayı durdurmak için break ifadesini kullanın.
  16. Ch değişkeninin içeriğini konsola yazdırın.
  17. Bu sürenin sonu.
  18. else ifadesinin gövdesinin sonu.
  19. Dosyayı kapatmak için close() işlevini çağırın.
  20. Program başarılı bir şekilde tamamlandıktan sonra değeri döndürmelidir.
  21. Main() işlevinin gövdesinin sonu.

ÖZET

  • Dosya işleme ile bir programın çıktısı gönderilebilir ve bir dosyada saklanabilir.
  • Daha sonra dosyadayken verilere bir dizi işlem uygulanabilir.
  • Akış, giriş/çıkış işlemlerinin gerçekleştirildiği bir cihazı temsil eden bir soyutlamadır.
  • Bir akış, belirsiz uzunluktaki karakterlerin hedefi veya kaynağı olarak temsil edilebilir.
  • Fstream kütüphanesi şunları sağlar: C++ Dosya işleme yöntemlerine sahip programcılar.
  • Kütüphaneyi kullanmak için #include önişlemci direktifini kullanarak onu programınıza dahil etmelisiniz.