Mobil ilovadagi hujjatlar katalogi — bu nima, maqsadi va saqlashni qanday tashkil qilish kerak

Muallif: IT Sectr Nashr etilgan: 2026-03-14 O'qish vaqti: 10 daq

Ilovaning hujjatlar katalogi foydalanuvchi fayllarining doimiy saqlash joyi bo'lib, ular seanslar orasida saqlanishi va zaxira nusxadan tiklanishi kerak. Apple File System Programming Guide, 2026 ma'lumotlariga ko'ra, iOS da Documents katalogi kesh va vaqtinchalik kataloglardan farqli o'laroq avtomatik ravishda iCloud zaxira nusxasiga kiritiladi. Hujjatlar katalogidan to'g'ri foydalanish foydalanuvchi fayllari ilova yangilanishi yoki qayta o'rnatilishi vaqtida yo'qolmasligini kafolatlaydi.

Asosiy ma'lumotlar

  • Documents Directory — yangilanishlar va zaxira nusxadan tiklash vaqtida saqlanadigan foydalanuvchi fayllarining doimiy saqlash joyi
  • iOS avtomatik ravishda Documents ni iCloud va iTunes zaxira nusxasiga kiritadi — faqat qayta yaratiladigan ma'lumotlarni istisno qiling
  • Android ning alohida Documents katalogi yo'q — analogi qo'lda zaxiralash bilan context.filesDir hisoblanadi
  • Avtomatik saqlash va fayl versiyalash nosozliklar va tasodifiy qayta yozish vaqtida ma'lumot yo'qolishining oldini oladi
  • Ma'lumotlar migratsiyasi ilova versiyasi yangilanganda foydalanuvchi sozlamalari va fayllarining yo'qolishining oldini olish uchun majburiydir

Ilovaning hujjatlar katalogi nima?

Hujjatlar katalogi — ilova sandboxidagi foydalanuvchi fayllarini doimiy saqlash uchun mo'ljallangan maxsus joy. Keshmadan farqli o'laroq, bu katalogdagi fayllar foydalanuvchi uchun muhim hisoblanadi: joy yetishmasa tizim tomonidan o'chirilmaydi, ilova yangilanishida saqlanadi va qurilma sinxronizatsiyasida zaxira nusxasi olinadi. iOS da Documents katalogi Sandbox konteynerining bir qismidir va avtomatik ravishda iCloud zaxira nusxasiga kiritiladi. Android da to'g'ridan-to'g'ri analogi yo'q — ekvivalenti doimiy fayllar uchun mo'ljallangan context.filesDir hisoblanadi, lekin o'rnatilgan zaxiralash mexanizmiga ega emas.

Hujjatlar katalogi bilan Android dagi ichki xotira (Internal Storage) o'rtasidagi farq minimal: ikkalasi ham ilova sandboxida joylashgan, ikkalasi ham o'chirilganda yo'qoladi, ikkalasi ham boshqa ilovalar uchun mavjud emas. Asosiy farq semantik: Documents Directory fayllar foydalanuvchi tomonidan yaratilgan yoki import qilingan deb hisoblaydi, Internal Storage esa ilovaning ichki fayllarini (ma'lumotlar bazalari, konfiguratsiyalar) o'z ichiga olishi mumkin. iOS da farq muhimroq: Documents avtomatik zaxiralanadi, Library/Application Support esa — yo'q. Bu saqlash strategiyasiga ta'sir qiladi: Documents ga faqat foydalanuvchi yangi qurilmada tiklamoqchi bo'lgan narsalarni joylashtiring, Application Support ga esa ilova qayta yarata oladigan ichki ma'lumotlarni.

Sandbox arxitekturasi boshqa ilovalar sizning ilovangizning hujjatlar katalogiga kira olmasligini kafolatlaydi. iOS da boshqa ilovalarning Documents ga kirishi jailbreaksiz mumkin emas. Android da root kirish istalgan ilovaning filesDir ni o'qishga imkon beradi, shuning uchun maxfiy ma'lumotlar (tokenlar, shifrlash kalitlari) AndroidX Security kutubxonasidan EncryptedSharedPreferences yoki EncryptedFile bilan qo'shimcha himoyalanishi kerak.

Hujjatlar katalogida qanday ma'lumotlar saqlanadi

Hujjatlar katalogida foydalanuvchi uchun qimmatli bo'lgan va ilova qayta ishga tushirilgandan yoki qurilma tiklanganidan keyin mavjud bo'lishi kerak bo'lgan ma'lumotlar joylashtirilishi kerak. Barcha fayllar bu katalogda saqlash uchun mos emas — tanlov ma'lumot turiga va foydalanish stsenariysiga bog'liq.

Foydalanuvchi hujjatlari va fayllari

Foydalanuvchi fayllari — hujjatlar katalogining asosiy mazmuni. Bular muharrirda yaratilgan matnli hujjatlar, ilova kamerasi bilan olingan tasvirlar, eksport qilingan PDF hisobotlar, audio yozuvlar, eslatmalar bo'lishi mumkin. Har bir bunday fayl foydalanuvchi tomonidan yoki uning iltimosiga binoan yaratilgan va istalgan vaqtda mavjud bo'lishi kerak. iOS da Documents dagi fayllar tizimning Files ilovasida ko'rsatiladi, bu foydalanuvchiga standart fayl menejeri orqali ularni boshqarish imkonini beradi. Android da bunday ko'rinish yo'q — ilova o'zi saqlangan fayllarni ko'rish uchun interfeysni ta'minlashi kerak.

Ma'lumotlar bazalari va ilova sozlamalari

SQLite ma'lumotlar bazalari va sozlamalar fayllari odatda hujjatlar katalogi yonida, lekin uning ichida emas saqlanadi. iOS da ma'lumotlar bazalari Library/Application Support da joylashtiriladi, chunki ular Files ilovasida ko'rsatilmasligi va alohida zaxiralanmasligi kerak. Android da ma'lumotlar bazalari standart holda Room yoki SQLiteOpenHelper orqali /data/data/<package>/databases/ da yaratiladi. Agar ma'lumotlar bazasi foydalanuvchi mazmunini (eslatmalar, kundalik, moliyaviy yozuvlar) o'z ichiga olsa, tizim orqali zaxiralashni ta'minlash uchun uni filesDir ga joylashtirish mumkin. Room RoomDatabase.Builder callback orqali ma'lumotlar bazasini saqlash uchun maxsus katalog belgilashga imkon beradi.

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

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

Eksport va import qilingan ma'lumotlar

Foydalanuvchi boshqa ilovalardan import qilgan yoki ilovangizdan eksport qilgan fayllar ham hujjatlar katalogida saqlanishi kerak. iOS da UIDocumentPickerViewController orqali import asCopy: true parametridan foydalanilganda avtomatik ravishda fayl nusxasini Documents ga joylashtiradi. Android da SAF dialogi orqali import ham ilova sandboxida fayl nusxasini yaratadi. Ma'lumotlarni eksport qilishda (masalan, kontaktlar bilan CSV fayl yaratish) faylni avval Documents/filesDir da saqlang, so'ngra foydalanuvchiga Share Sheet orqali uni ulashishni taklif qiling. Bu foydalanuvchi jo'natishdan keyin faylni saqlashni unutgan taqdirda ham, nusxaning keyingi foydalanish uchun ilovada qolishini kafolatlaydi.

Android da hujjatlar katalogi bilan qanday ishlash kerak

Android da hujjatlar katalogi funktsiyalarini context.filesDir bajaradi. Qo'shimcha ravishda SD kartada context.externalFilesDir katalogi mavjud, ammo u ma'lumotlarning saqlanishini kafolatlamaydi. Ushbu kataloglar bilan ishlashning asosiy usullarini ko'rib chiqamiz.

filesDir orqali fayllarga kirish va boshqarish

filesDir — Android da ilovaning doimiy fayllari uchun asosiy katalog. U ilova sandboxida joylashgan va o'chirilganda butunlay yo'qoladi. File namunasini olish uchun /data/data/<package>/files/ katalogiga yo'lni qaytaradigan context.filesDir dan foydalaning. Fayllarni yaratish va o'qish uchun Java/Kotlin dagi standart File operatsiyalaridan yoki fayl nomini qabul qiladigan va FileInputStream/FileOutputStream qaytaradigan Context metodlari openFileInput() va openFileOutput() dan foydalaning. openFileOutput() metodi fayl hali mavjud bo'lmasa, uni avtomatik ravishda filesDir da yaratadi va kirish rejimini belgilashga imkon beradi: MODE_PRIVATE (faqat joriy ilova), MODE_APPEND (qo'shish) yoki MODE_WORLD_READABLE (eskirgan, API 24+ dan foydalanilmaydi).

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 saqlash xususiyatlari

Android 10+ da Scoped Storage modeli filesDir ga ta'sir qilmaydi — ilovaning o'z sandboxiga kirish to'liq qoladi. filesDir ichidagi barcha o'qish va yozish operatsiyalari qo'shimcha ruxsatlarni talab qilmaydi. Biroq, filesDir orqali boshqa ilovaning fayllariga kirishga urinishda istisno olasiz. Fayl almashish uchun faylni boshqa ilovaga uzatish uchun vaqtinchalik content URI yaratadigan FileProvider dan foydalaning. FileProvider AndroidManifest.xml da <provider> tegi orqali e'lon qilinadi va yo'llar XML faylida konfiguratsiya qilinadi. Bu ilovalar o'rtasida fayl uzatish uchun standart mexanizm bo'lib, masalan, ACTION_SEND bilan Intent orqali rasm jo'natishda foydalaniladi.

iOS da hujjatlar katalogi bilan qanday ishlash kerak

iOS da Documents Directory maxsus statusga ega ilova Sandbox konteynerining bir qismidir. Bu katalogdagi fayllar avtomatik ravishda iCloud zaxira nusxasiga kiritiladi, Files ilovasida ko'rsatiladi va App Store orqali ilova yangilanishida saqlanadi.

Documents Directory va zaxira nusxa

Avtomatik zaxiralash Documents — iOS ning asosiy afzalligi. Foydalanuvchi qurilmani iTunes ga ulaganda yoki iCloud Backup ni yoqqanda, Documents/ dagi barcha fayllar zaxira nusxaga ko'chiriladi. Yangi qurilmada tiklashda foydalanuvchi barcha fayllarini qo'shimcha harakatlarsiz oladi. Biroq, bu afzallik kamchilikka aylanadi agar ilova Documents da katta hajmdagi ma'lumotlarni saqlasa: zaxiralash vaqti oshadi va iCloud xotirasi tez tugashi mumkin. Shuning uchun Documents da faqat foydalanuvchiga tiklash vaqtida haqiqatan kerak bo'lgan fayllarni saqlash kerak. Vaqtinchalik fayllar, kesh va qayta yaratiladigan ma'lumotlar Caches yoki Library/Application Support da bo'lishi kerak. Apple isExcludedFromBackup atributi orqali internetdan qayta yuklab olinadigan fayllarni zaxira nusxadan chiqarishni tavsiya qiladi.

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

let fileURL = docsURL.appendingPathComponent("notes.txt")
let text = "Eslatma mazmuni"
try text.write(to: fileURL, atomically: true, encoding: .utf8)

iCloud Drive va qurilmalar o'rtasida sinxronizatsiya

iCloud Drive bir foydalanuvchining qurilmalari o'rtasida Documents dagi fayllarni sinxronlashtirish imkonini beradi. Sinxronizatsiyani yoqish uchun ilova versiyalash va konfliktlarni hal qilishni avtomatik boshqaradigan NSDocument yoki UIDocument API laridan foydalanishi kerak. Muqobil yondashuv — sinxronizatsiya ustida moslashuvchan nazoratni ta'minlaydigan, lekin CloudKit Dashboard da konfiguratsiyani talab qiladigan CloudKit bilan iCloud dan foydalanish. iCloud Drive dan foydalanganda tahrirlash konfliktlarini (merge yoki last-write-wins) to'g'ri boshqarayotganingizga va ilova interfeysi orqali foydalanuvchini sinxronizatsiya holati haqida xabardor qilayotganingizga ishonch hosil qiling. iCloud bir zumda sinxronizatsiyani kafolatlamaydi — kechikish fayl hajmi va ulanish sifatiga qarab bir necha soniyadan bir necha daqiqagacha bo'lishi mumkin. Kritik muhim ma'lumotlar uchun tranzaksiya yozuvi va versiyalashdan foydalaning, shunda konfliktda faylning oldingi versiyasini tiklash mumkin bo'lsin.

Cache Directory dan farqlar va eng yaxshi amaliyotlar

To'g'ri tanlov Documents Directory va Cache Directory o'rtasida foydalanuvchi ma'lumotlarini saqlash ishonchliligini belgilaydi. Tanlovdagi xato yoki ma'lumot yo'qolishiga (muhim fayllar keshda saqlansa) yoki zaxira nusxaning to'lib ketishiga (vaqtinchalik fayllar Documents da saqlansa) olib keladi.

MezonDocuments DirectoryCache Directory
Saqlanish kafolatiYuqori — tizim tomonidan o'chirilmaydiPast — tozalanishi mumkin
Zaxira nusxa (iOS)Avtomatik iCloud daZaxiralanmaydi
Foydalanuvchiga ko'rinish (iOS)Files ilovasidaYashirin
Yangilanishda tozalashTozalanmaydiTozalanishi mumkin
Tavsiya etilgan hajmIstagan, lekin sozlamalar orqali nazorat bilan100–200 MB gacha
Ma'lumot turiFoydalanuvchi fayllariVaqtinchalik qayta yaratiladigan ma'lumotlar

Eng yaxshi amaliyotlar hujjatlar katalogidan foydalanish bir necha asosiy qoidalarni o'z ichiga oladi. Birinchidan, bu katalogdan fayllarni o'chirishdan oldin har doim foydalanuvchidan tasdiq so'rang. Keshmadan farqli o'laroq, hujjatni o'chirish foydalanuvchi mazmunining qaytarib bo'lmaydigan yo'qolishiga olib kelishi mumkin. Ikkinchidan, fayl versiyalashni joriy qiling: mavjud faylni qayta yozishda oldingi versiyani _backup qo'shimchasi bilan saqlang yoki Snapshot mexanizmlaridan foydalaning. Uchinchidan, foydalanuvchiga hujjatlar katalogidan fayllarni ko'rish, nomini o'zgartirish, o'chirish va eksport qilish uchun interfeysni taqdim eting. iOS da Documents dagi fayllar avtomatik ravishda Files da ko'rsatiladi, Android da o'z fayl menejerini joriy qilish yoki uchinchi tomon kutubxonalaridan foydalanish kerak.

Ilova yangilanishida ma'lumotlar migratsiyasiga alohida e'tibor bering. Agar yangi versiya fayl saqlash strukturasini o'zgartirsa (masalan, ma'lumotlarni bir pastki katalogdan boshqasiga ko'chiradi yoki fayl formatini o'zgartiradi), yangilanishdan keyin birinchi ishga tushirishda bir martalik migratsiyani joriy qiling. Ma'lumotlar sxemasi versiya raqamini SharedPreferences da saqlang va nomuvofiqlikda migratsiyani ishga tushiring. Migratsiya tugagunga qadar eski fayllarni o'chirmang — nosozlikda foydalanuvchi ma'lumotlarni yo'qotmasligi kerak. Agar migratsiya format konvertatsiyasini o'z ichiga olsa (masalan, JSON dan SQLite ga o'tish), asl fayllarni migratsiya sanasi bilan alohida katalogda zaxira nusxa sifatida saqlang. Foydalanuvchi Apple Human Interface Guidelines tavsiyasiga ko'ra, yangilanishdan keyin birinchi 30 kun ichida ilova sozlamalari orqali o'zgarishlarni qaytarish imkoniyatiga ega bo'lishi kerak.

Tez-tez beriladigan savollar

iOS da Documents va Library/Application Support o'rtasidagi farq nima?

Documents Files ilovasida ko'rsatiladi va avtomatik ravishda iCloud da zaxiralanadi. Application Support Files da ko'rsatilmaydi va standart holda zaxiralanmaydi. Foydalanuvchiga ko'rsatilishi shart bo'lmagan ilovaning ichki ma'lumotlari uchun Application Support ni tanlang.

Hisob o'chirilganda hujjatlar katalogini tozalash kerakmi?

Ha, hisob o'chirilganda foydalanuvchiga ushbu hisob bilan bog'liq barcha mahalliy fayllarni tozalashni taklif qiling. „Barcha mahalliy ma'lumotlarni o'chirish kerakmi?“ degan savol bilan dialog oynasini ko'rsating va qaysi fayllar ta'sir qilishini sanab o'ting. Bu GDPR talabi va App Store va Google Play siyosatlariga muvofiqlikdir.

Hujjatlar katalogidan fayllarni yangi qurilmaga qanday ko'chirish mumkin?

iOS da qurilmani iCloud yoki iTunes zaxira nusxasidan tiklash kifoya — Documents dagi fayllar avtomatik tiklanadi. Android da filesDir dagi fayllarni zaxiralash uchun Google Drive Backup API dan foydalaning yoki bulut xizmati orqali eksportni joriy qiling.

Foydalanuvchi tasodifan hujjatlar katalogidan fayllarni o'chirishi mumkinmi?

iOS da foydalanuvchi Files ilovasi orqali fayllarni o'chirishi mumkin. Android da o'chirish faqat ilovangiz interfeysi orqali mumkin. Tasodifiy ma'lumot yo'qolishining oldini olish uchun hujjatlar uchun 30 kunlik saqlash muddati bilan axlat qutisini joriy qilish tavsiya etiladi.

Ilova yangilanishida fayllarning saqlanishini qanday ta'minlash mumkin?

Hech qanday qo'shimcha harakat talab etilmaydi — iOS va Android App Store yoki Google Play orqali yangilashda hujjatlar katalogini avtomatik saqlaydi. Biroq, saqlash strukturasi o'zgargan taqdirda, sozlamalarda sxema versiya raqamini tekshirib, yangi versiyaning birinchi ishga tushirilishida ma'lumotlar migratsiyasini joriy qiling.

Xulosa

  • Documents Directory — tizim tozalashidan himoyalangan va iOS da iCloud orqali zaxiralanadigan foydalanuvchi fayllarining doimiy saqlash joyi
  • iOS avtomatik ravishda Documents ni zaxiralaydi, uni Files ilovasida ko'rsatadi va qurilma tiklanishida mazmunni qayta tiklaydi
  • Android context.filesDir dan analog sifatida foydalanadi — fayllar yangilanishda saqlanadi, lekin o'rnatilgan zaxiralash mexanizmiga ega emas
  • Hujjatlar katalogida foydalanuvchi fayllarini, eksport qilingan ma'lumotlarni va foydalanuvchi mazmuni bo'lgan ma'lumotlar bazalarini joylashtiring — ilovani qayta o'rnatishdan keyin qolishi kerak bo'lgan hamma narsani
  • Kesh, vaqtinchalik fayllar va qayta yaratiladigan resurslar ni Cache Directory da saqlang, zaxira nusxani to'ldirmaslik va tizim tozalashida ma'lumot yo'qotish xavfini olmaslik uchun
  • Versiya yangilanishida ma'lumotlar migratsiyasi majburiydir: sxema versiyasini tekshiring, ma'lumotlar ko'chirilishini ishga tushiring va qaytarish uchun eski versiyaning zaxira nusxasini saqlang
  • Hujjatlar uchun axlat qutisi 30 kunlik saqlash muddati bilan foydalanuvchi fayllarining tasodifiy yo'qolishining oldini oladi va HIG va Material Design talablariga javob beradi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing