Mobil Uygulamada Belgeler Dizini — nedir, amacı ve depolama nasıl organize edilir

Yazar: IT Sectr Yayınlanma: 2026-03-14 Okuma süresi: 10 dk

Uygulama belgeler dizini, oturumlar arasında korunması ve yedeklerden geri yüklenmesi gereken kullanıcı dosyaları için kalıcı bir depolama alanıdır. Apple File System Programming Guide, 2026'ya göre, iOS'ta Documents dizini, önbellek ve geçici dizinlerin aksine otomatik olarak iCloud yedeklemesine dahil edilir. Belgeler dizininin doğru kullanımı, uygulama güncellemesi veya yeniden yükleme sırasında kullanıcı dosyalarının kaybolmamasını sağlar.

Önemli Noktalar

  • Documents Directory — güncellemeler ve yedekten geri yükleme sırasında korunan kullanıcı dosyaları için kalıcı depolama
  • iOS otomatik olarak Documents'ı iCloud ve iTunes yedeklemesine dahil eder — yalnızca yeniden oluşturulabilir verileri hariç tutun
  • Android ayrı bir Documents dizinine sahip değildir — eşdeğeri, manuel yedekleme yönetimiyle context.filesDir'dir
  • Otomatik kaydetme ve dosya sürümlemesi, çökmeler ve yanlışlıkla üzerine yazma sırasında veri kaybını önler
  • Veri geçişi, sürüm güncellemeleri sırasında kullanıcı ayarlarının ve dosyalarının kaybını önlemek için zorunludur

Uygulama belgeler dizini nedir?

Belgeler dizini, uygulama kum havuzu (sandbox) içinde, kullanıcı dosyalarının kalıcı olarak saklanması için tasarlanmış özel bir depolama alanıdır. Önbelleğin aksine, bu dizindeki dosyalar kullanıcı için önemli kabul edilir: alan azaldığında sistem tarafından silinmez, uygulama güncellemeleri sırasında korunur ve cihaz senkronizasyonu sırasında yedeklenir. iOS'ta Documents dizini, Sandbox konteynerinin bir parçasıdır ve otomatik olarak iCloud yedeklemesine dahil edilir. Android'de doğrudan bir eşdeğeri yoktur — eşdeğeri, kalıcı dosyalar için de olan ancak yerleşik bir yedekleme mekanizması bulunmayan context.filesDir'dir.

Android'de belgeler dizini ile dahili depolama arasındaki fark minimumdur: her ikisi de uygulama kum havuzundadır, her ikisi de kaldırma sırasında silinir, her ikisi de diğer uygulamalar tarafından erişilemez. Temel fark anlamsaldır: Belgeler Dizini, dosyaların kullanıcı tarafından oluşturulduğunu veya içe aktarıldığını varsayarken, dahili depolama uygulamanın iç dosyalarını (veritabanları, yapılandırmalar) içerebilir. iOS'ta fark daha belirgindir: Documents otomatik olarak yedeklenirken, Library/Application Support yedeklenmez. Bu, depolama stratejisini etkiler: Documents'a yalnızca kullanıcının yeni bir cihazda geri yüklemek isteyeceği şeyleri koyun ve Application Support'e uygulamanın yeniden oluşturabileceği iç verileri koyun.

Kum havuzu mimarisi, diğer uygulamaların uygulamanızın belgeler dizinine erişememesini sağlar. iOS'ta, diğer uygulamaların Documents'ına jailbreak olmadan erişmek imkansızdır. Android'de, root erişimi herhangi bir uygulamanın filesDir'ini okumaya izin verir, bu nedenle hassas veriler (tokenlar, şifreleme anahtarları) EncryptedSharedPreferences veya AndroidX Security kitaplığından EncryptedFile kullanılarak ek olarak korunmalıdır.

Belgeler dizininde hangi veriler saklanır

Belgeler dizini, kullanıcı için değerli olan ve uygulama yeniden başlatıldıktan veya cihaz geri yüklendikten sonra erişilebilir olması gereken verileri saklamalıdır. Tüm dosyalar bu dizinde saklanmak için uygun değildir — seçim, veri türüne ve kullanım senaryosuna bağlıdır.

Kullanıcı belgeleri ve dosyaları

Kullanıcı dosyaları, belgeler dizininin ana içeriğidir. Bunlar, bir düzenleyicide oluşturulan metin belgeleri, uygulama kamerasıyla çekilen görüntüler, dışa aktarılan PDF raporları, ses kayıtları, notlar olabilir. Bu tür her dosya kullanıcı tarafından veya talebi üzerine oluşturulur ve her an erişilebilir olmalıdır. iOS'ta, Documents'taki dosyalar sistem Dosyalar uygulamasında görüntülenir ve kullanıcının bunları standart dosya yöneticisi aracılığıyla yönetmesine olanak tanır. Android'de benzer bir görüntüleme yoktur — uygulama, kaydedilen dosyaları görüntülemek için kendisi bir arayüz sağlamalıdır.

Veritabanları ve uygulama ayarları

SQLite veritabanları ve ayar dosyaları genellikle belgeler dizininin yakınında saklanır, ancak içinde değil. iOS'ta, veritabanları Library/Application Support'a yerleştirilir, çünkü Dosyalar uygulamasında görünmemeli ve ayrı olarak yedeklenmemelidir. Android'de, veritabanları varsayılan olarak /data/data/<package>/databases/ içinde Room veya SQLiteOpenHelper aracılığıyla oluşturulur. Veritabanı kullanıcı içeriği (notlar, günlük, finansal kayıtlar) içeriyorsa, sistem yedeklemesini sağlamak için filesDir'e yerleştirilebilir. Room, RoomDatabase.Builder geri çağrısı aracılığıyla veritabanı depolaması için özel bir dizin belirlemeye izin verir.

kotlin
val dbFile = File(context.filesDir, "user_database.db")

val db = Room.databaseBuilder<AppDatabase>(
    context,
    dbFile.absolutePath
).build()

Dışa ve içe aktarılan veriler

Kullanıcının diğer uygulamalardan içe aktardığı veya uygulamanızdan dışa aktardığı dosyalar da belgeler dizininde saklanmalıdır. iOS'ta, UIDocumentPickerViewController aracılığıyla içe aktarma, asCopy: true parametresi kullanıldığında otomatik olarak dosyanın bir kopyasını Documents'a yerleştirir. Android'de, SAF diyalogu aracılığıyla içe aktarma da uygulama kum havuzunda dosyanın bir kopyasını oluşturur. Verileri dışa aktarırken (örneğin, kişilerle bir CSV dosyası oluşturmak), önce dosyayı Documents/filesDir'e kaydedin, ardından kullanıcıya Share Sheet aracılığıyla paylaşma seçeneği sunun. Bu, kullanıcı gönderdikten sonra dosyayı kaydetmeyi unutsa bile, daha sonra kullanılmak üzere uygulamada bir kopyanın kalmasını sağlar.

Android'de belgeler diziniyle nasıl çalışılır

Android'de, belgeler dizini işlevini context.filesDir yerine getirir. Ek olarak, SD kartta context.externalFilesDir dizini bulunur, ancak veri bütünlüğünü garanti etmez. Bu dizinlerle çalışmanın ana tekniklerini inceleyelim.

filesDir aracılığıyla dosyalara erişim ve yönetim

filesDir, Android'de uygulamanın kalıcı dosyaları için ana dizindir. Uygulama kum havuzunda bulunur ve kaldırma sırasında tamamen silinir. Bir File örneği almak için, /data/data/<package>/files/ yolunu döndüren context.filesDir'i kullanın. Dosyalar oluşturmak ve okumak için standart Java/Kotlin File işlemlerini veya bir dosya adı alıp FileInputStream/FileOutputStream döndüren Context yöntemleri openFileInput() ve openFileOutput()'u kullanın. openFileOutput() yöntemi, dosya henüz yoksa otomatik olarak filesDir'de oluşturur ve erişim modunu belirlemeye izin verir: MODE_PRIVATE (yalnızca geçerli uygulama), MODE_APPEND (ekleme) veya MODE_WORLD_READABLE (kullanımdan kaldırıldı, API 24+'dan beri kullanılmıyor).

kotlin
val fileName = "report.pdf"
val content = "PDF content".toByteArray()

context.openFileOutput(fileName, Context.MODE_PRIVATE).use { stream ->
    stream.write(content)
}

val bytes = context.openFileInput(fileName).use { stream ->
    stream.readBytes()
}

Android 10+'da depolama özellikleri

Android 10+'da, Scoped Storage modeli filesDir'i etkilemez — uygulamanın kendi kum havuzuna tam erişim devam eder. filesDir içindeki tüm okuma ve yazma işlemleri ek izinler gerektirmez. Ancak, filesDir aracılığıyla başka bir uygulamanın dosyalarına erişmeye çalışırsanız, bir istisna alırsınız. Dosyaları paylaşmak için, bir dosyayı başka bir uygulamaya aktarmak üzere geçici bir içerik URI'si oluşturan FileProvider'ı kullanın. FileProvider, AndroidManifest.xml'de <provider> etiketi aracılığıyla bildirilir ve bir XML yol dosyasında yapılandırılır. Bu, uygulamalar arasında dosya aktarımı için standart mekanizmadır ve örneğin, ACTION_SEND ile Intent aracılığıyla bir görüntü gönderirken kullanılır.

iOS'ta belgeler diziniyle nasıl çalışılır

iOS'ta, Documents Directory özel statüye sahip uygulamanın Sandbox konteynerinin bir parçasıdır. Bu dizindeki dosyalar otomatik olarak iCloud yedeklemesine dahil edilir, Dosyalar uygulamasında görüntülenir ve App Store aracılığıyla uygulama güncellemeleri sırasında korunur.

Belgeler dizini ve yedekleme

Documents'ın otomatik yedeklenmesi iOS'un önemli bir avantajıdır. Kullanıcı cihazı iTunes'a bağladığında veya iCloud Backup'ı etkinleştirdiğinde, Documents/ içindeki tüm dosyalar yedeklemeye kopyalanır. Yeni bir cihazda geri yükleme yaparken, kullanıcı ek işlem yapmadan tüm dosyalarını alır. Ancak, uygulama Documents'ta büyük miktarda veri depoluyorsa bu avantaj dezavantaja dönüşür: yedekleme süresi artar ve iCloud depolama alanı hızla tükenebilir. Bu nedenle, Documents yalnızca kullanıcının geri yükleme sırasında gerçekten ihtiyaç duyduğu dosyaları saklamalıdır. Geçici dosyalar, önbellek ve yeniden oluşturulabilir veriler Caches veya Library/Application Support'ta bulunmalıdır. Apple, isExcludedFromBackup özelliği aracılığıyla internetten yeniden indirilebilen dosyaların yedeklemeden hariç tutulmasını önerir.

swift
let fm = FileManager.default
let docsURL = fm.urls(
    for: .documentDirectory,
    in: .userDomainMask
).first!

let fileURL = docsURL.appendingPathComponent("notes.txt")
let text = "Not içeriği"
try text.write(to: fileURL, atomically: true, encoding: .utf8)

iCloud Drive ve cihazlar arası senkronizasyon

iCloud Drive, kullanıcının cihazları arasında Documents'taki dosyaların senkronize edilmesine olanak tanır. Senkronizasyonu etkinleştirmek için uygulamanın, sürümleme ve çakışma çözümünü otomatik olarak yöneten NSDocument veya UIDocument API'lerini kullanması gerekir. Alternatif bir yaklaşım, senkronizasyon üzerinde daha esnek kontrol sağlayan ancak CloudKit Dashboard'da yapılandırma gerektiren CloudKit ile iCloud kullanmaktır. iCloud Drive'ı kullanırken, düzenleme çakışmalarını doğru şekilde ele aldığınızdan (birleştirme veya son yazan kazanır) ve uygulama arayüzü aracılığıyla kullanıcıyı senkronizasyon durumu hakkında bilgilendirdiğinizden emin olun. iCloud anında senkronizasyonu garanti etmez — gecikme, dosya boyutuna ve bağlantı kalitesine bağlı olarak birkaç saniyeden birkaç dakikaya kadar değişebilir. Kritik veriler için, çakışma durumunda dosyanın önceki sürümünün geri yüklenebilmesi için işlemsel yazma ve sürümleme kullanın.

Önbellek dizininden farkları ve en iyi uygulamalar

Doğru seçim Documents Directory ile Cache Directory arasında, kullanıcı verisi depolamanın güvenilirliğini belirler. Seçimdeki bir hata, ya veri kaybına (önemli dosyalar önbellekte saklanıyorsa) ya da yedekleme taşmasına (geçici dosyalar Documents'ta saklanıyorsa) yol açar.

KriterDocuments DirectoryCache Directory
Veri bütünlüğü garantisiYüksek — sistem tarafından silinmezDüşük — temizlenebilir
Yedekleme (iOS)Otomatik olarak iCloud'daYedeklenmez
Kullanıcı görünürlüğü (iOS)Dosyalar uygulamasındaGizli
Güncellemede temizlikTemizlenmezTemizlenebilir
Önerilen boyutHerhangi bir, ancak ayarlarla kontrol edilir100–200 MB'a kadar
Veri türüKullanıcı dosyalarıGeçici yeniden oluşturulabilir veriler

En iyi uygulamalar belgeler dizininin kullanımı için birkaç temel kural içerir. Birincisi, bu dizinden dosyaları silmeden önce her zaman kullanıcı onayı isteyin. Önbelleğin aksine, bir belgeyi silmek kullanıcı içeriğinin geri döndürülemez kaybına yol açabilir. İkincisi, dosya sürümlemesi uygulayın: mevcut bir dosyanın üzerine yazarken, önceki sürümü _backup sonekiyle kaydedin veya Snapshot mekanizmalarını kullanın. Üçüncüsü, kullanıcıya belgeler dizininden dosyaları görüntüleme, yeniden adlandırma, silme ve dışa aktarma için bir arayüz sağlayın. iOS'ta, Documents'taki dosyalar otomatik olarak Dosyalar'da görüntülenir; Android'de, kendi dosya yöneticinizi uygulamanız veya üçüncü taraf kitaplıkları kullanmanız gerekir.

Uygulama güncellemeleri sırasında veri geçişine özellikle dikkat edin. Yeni sürüm dosya depolama yapısını değiştirirse (örneğin, verileri bir alt dizinden diğerine taşır veya dosya biçimini değiştirir), güncellemeden sonraki ilk başlatmada tek seferlik bir geçiş uygulayın. Veri şeması sürüm numarasını SharedPreferences'ta saklayın ve eşleşmezlerse geçişi çalıştırın. Geçiş tamamlanmadan önce eski dosyaları silmeyin — hata durumunda kullanıcı veri kaybetmemelidir. Geçiş biçim dönüştürme içeriyorsa (örneğin, JSON'dan SQLite'a geçiş), orijinal dosyaları geçiş tarihiyle birlikte ayrı bir dizinde yedek olarak kaydedin. Kullanıcı, Apple Human Interface Guidelines'ın önerdiği gibi, güncellemeden sonraki ilk 30 gün içinde uygulama ayarları aracılığıyla değişiklikleri geri alabilmelidir.

Sıkça Sorulan Sorular

iOS'ta Documents ve Library/Application Support arasındaki fark nedir?

Documents Dosyalar uygulamasında görüntülenir ve otomatik olarak iCloud'a yedeklenir. Application Support Dosyalar'da görüntülenmez ve varsayılan olarak yedeklenmez. Kullanıcıya göstermeniz gerekmeyen uygulama iç verileri için Application Support'u seçin.

Bir hesap silinirken belgeler dizini temizlenmeli mi?

Evet, bir hesabı silerken, kullanıcıya bu hesapla ilişkili tüm yerel dosyaları temizleme seçeneği sunun. “Tüm yerel veriler silinsin mi?” diye soran bir iletişim kutusu gösterin ve hangi dosyaların etkileneceğini listeleyin. Bu bir GDPR gereksinimidir ve App Store ve Google Play politikalarına uyumluluktur.

Belgeler dizininden yeni bir cihaza dosyalar nasıl aktarılır?

iOS'ta, cihazı bir iCloud veya iTunes yedeklemesinden geri yüklemeniz yeterlidir — Documents'taki dosyalar otomatik olarak geri yüklenir. Android'de, filesDir'deki dosyaları yedeklemek için Google Drive Backup API'sini kullanın veya bir bulut hizmeti aracılığıyla dışa aktarma uygulayın.

Bir kullanıcı yanlışlıkla belgeler dizininden dosyaları silebilir mi?

iOS'ta, kullanıcı Dosyalar uygulaması aracılığıyla dosyaları silebilir. Android'de silme yalnızca uygulamanızın arayüzü aracılığıyla mümkündür. Yanlışlıkla veri kaybını önlemek için, silme işleminden sonraki 30 gün içinde geri yükleme olanağına sahip bir belge çöp kutusu uygulanması önerilir.

Uygulama güncellemeleri sırasında dosya bütünlüğü nasıl sağlanır?

Ek bir işlem gerekmez — iOS ve Android, App Store veya Google Play aracılığıyla güncellemeler sırasında belgeler dizinini otomatik olarak korur. Ancak, depolama yapısını değiştirirken, ayarlardaki şema sürüm numarasını kontrol ederek yeni sürümün ilk başlatmasında veri geçişi uygulayın.

Özet

  • Documents Directory — kullanıcı dosyaları için kalıcı depolama, sistem temizliğinden korunur ve iOS'ta iCloud aracılığıyla yedeklenir
  • iOS otomatik olarak Documents'ı yedekler, Dosyalar uygulamasında görüntüler ve cihaz geri yüklendiğinde içeriğini geri yükler
  • Android eşdeğer olarak context.filesDir kullanır — dosyalar güncellemeler sırasında korunur ancak yerleşik yedekleme mekanizması yoktur
  • Belgeler dizini kullanıcı dosyalarını, dışa aktarılan verileri ve kullanıcı içeriği olan veritabanlarını saklamalıdır — uygulama yeniden yüklemesinden sonra kalması gereken her şey
  • Önbellek, geçici dosyalar ve yeniden oluşturulabilir kaynaklar, yedeklemeyi aşırı yüklememek ve sistem temizliği sırasında önbelleğe alınmamış veri kaybı riskini önlemek için Cache Directory'de saklanmalıdır
  • Veri geçişi sürüm güncellemeleri sırasında zorunludur: şema sürümünü kontrol edin, veri geçişini çalıştırın ve geri alma için eski sürümün yedeğini saklayın
  • Belge çöp kutusu 30 günlük saklama süresiyle kullanıcı dosyalarının yanlışlıkla kaybını önler ve HIG ve Material Design gereksinimlerini karşılar

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun