Mobil inkişafda fayl sistemi və sənədlər: bu nədir, hansı prinsiplər və necə işləyir

Müəllif: IT Sectr Dərc olunub: 2026-07-19 Oxuma vaxtı: 12 dəq

Fayl sistemi ilə işləmək istənilən mobil tətbiqin əsasıdır. Hər platforma öz giriş modelini təklif edir: iOS-da Sandbox tətbiqləri ayrı konteynerlərdə təcrid edir, Android-də isə Scoped Storage birgə yaddaşa birbaşa girişi məhdudlaşdırır. Google Developer Documentation (2026)-ya görə, Android 10 ilə Scoped Storage-ın tətbiqi məlumat saxlama arxitekturasının tam yenidən nəzərdən keçirilməsini tələb etdi. Bu bələdçidə hər iki platforma üçün FileManager, MediaStore API, Storage Access Framework və DocumentProvider-ı nəzərdən keçirəcəyik.

Əsas məqamlar

  • Sandbox — iOS-un təcrid olunmuş mühiti, burada hər bir tətbiq yalnız öz qovluğunda işləyir, digər tətbiqlərin məlumatlarına girişi olmadan.
  • Scoped Storage — MediaStore API və SAF vasitəsilə xarici yaddaşa birbaşa girişi məhdudlaşdıran Android 10+ modeli.
  • FileManager — iOS-da fayl əməliyyatları üçün əsas sinif: yaratma, oxu, kopyalama, daşıma və silmə.
  • Storage Access Framework — Intent ACTION_OPEN_DOCUMENT istifadə edərək sənədləri seçmək üçün Android sistem mexanizmi.
  • DocumentProvider — SAF vasitəsilə tətbiq fayllarını birgə fayl sistemində yayımlamaq üçün Android komponenti.

Mobil tətbiqlərdə fayl sistemi nədir?

Mobil tətbiqlərdə fayl sistemi iOS və Android cihazlarında məlumatların saxlanmasını və girişini təyin edən API-lər, təhlükəsizlik qaydaları və məhdudiyyətlər toplusudur. Masaüstü əməliyyat sistemlərindən fərqli olaraq, mobil platformalar hər bir tətbiqi təcrid edir ki, istifadəçi məlumatları digər proqramlar tərəfindən icazəsiz oxunmadan qorunsun.

iOS və Android arasında memarlıq fərqləri

iOS Sandbox modelindən istifadə edir, burada hər bir tətbiq ciddi məhdud icazələrlə öz konteynerində mövcuddur. Versiya 10-dan əvvəl Android xarici yaddaşa tam giriş təmin edirdi, lakin Scoped Storage-ın tətbiqi ilə yanaşma iOS-a yaxınlaşdı. Əsas fərq ondadır ki, iOS fayl sistemini tamamilə təcrid edir, Android isə bir neçə giriş səviyyəsi təklif edir: özəl qovluq, ictimai MediaStore və SAF vasitəsilə müvəqqəti giriş.

Əsas yaddaş növləri

Mobil tətbiqlər üç növ məlumat yaddaşından istifadə edir. Şəxsi yaddaş — daxili fayllar və keş üçün yalnız tətbiqin daxil ola biləcəyi qovluq. Birgə yaddaş — MediaStore (Android) və ya Files App (iOS) vasitəsilə media faylları. Bulud yaddaş — cihazlar arasında sinxronizasiya üçün iCloud Drive və Google Drive. Hər növün ölçü, fayl ömrü və giriş şərtləri baxımından öz məhdudiyyətləri var.

Yaddaş növüiOSAndroid
ŞəxsiDocuments, Library, CachesgetFilesDir(), getCacheDir()
Birgə mediaPHPhotoLibrary seçici vasitəsiləMediaStore API (ContentResolver)
Birgə sənədlərUIDocumentPicker vasitəsilə Files AppStorage Access Framework (SAF)
BuludiCloud Drive (UIDocument)Google Drive API
KeşCaches qovluğu, sistem tərəfindən təmizlənirgetCacheDir(), getExternalCacheDir()

Mobil inkişafda fayl sistemi: iOS-da Sandbox

Sandbox hər bir tətbiqi təcrid edən iOS təhlükəsizlik memarlığıdır. Tətbiq yalnız öz sandbox daxilində oxuya və yaza bilər. Kontaktlara, fotolara və ya digər tətbiqlərin fayllarına daxil olmaq üçün sistem seçicilərindən istifadə edilməlidir: UIImagePickerController və ya UIDocumentPickerViewController. Files App-ə giriş Info.plist-də UIFileSharingEnabled bayrağı vasitəsilə konfiqurasiya edilir. iOS-da mobil inkişafda fayl sistemi qovluq strukturunu başa düşməyi və hər məlumat növü üçün düzgün yeri seçməyi tələb edir.

Sandbox qovluq strukturu

iOS sandbox bir neçə standart qovluqdan ibarətdir. Documents — istifadəçi faylları üçün, iCloud Backup-a daxildir. Caches — yaddaş az olduqda sistemin silə biləcəyi müvəqqəti məlumatlar üçün. Temporary — cari sessiya faylları üçün, yenidən başlatmada təmizlənir. Application Support — istifadəçidən gizlədilmiş daxili tətbiq məlumatları üçün. Səhv qovluğu seçmək problemlərə səbəb olur: Documents-da keş saxlamaq iCloud yerini boş yerə sərf edir və Apple-ın fayl sistemi təlimatlarını pozur.

swift
import Foundation

let fileManager = FileManager.default
guard let documentsURL = fileManager.urls(
    for: .documentDirectory,
    in: .userDomainMask
).first else { return }

let fileURL = documentsURL.appendingPathComponent("notes.txt")
let text = "Содержимое файла"

// Atomik yazma şifrələmə ilə
try text.write(
    to: fileURL,
    atomically: true,
    encoding: .utf8
)

FileManager — fayl əməliyyatları üçün əsas API

FileManager sinfi iOS-da faylları idarə etmək üçün tam metodlar dəsti təqdim edir. FileManager.default əksər əməliyyatlar üçün uyğun olan thread-safe singleton-dur. fileExists(atPath:), createDirectory(at:withIntermediateDirectories:attributes:), copyItem(at:to:) və removeItem(at:) kimi metodlar əsas ssenariləri əhatə edir. 1 MB-dan böyük fayl əməliyyatları DispatchQueue.global() vasitəsilə fon thread-də aparılmalıdır. Böyük həcmləri axınla ötürmək üçün bütün faylı yaddaşa yükləmək əvəzinə FileHandle istifadə edin.

swift
func readDocumentsFile(named fileName: String) -> String? {
    guard let docsURL = FileManager.default.urls(
        for: .documentDirectory,
        in: .userDomainMask
    ).first else { return nil }

    let fileURL = docsURL.appendingPathComponent(fileName)
    return try? String(contentsOf: fileURL)
}

Mobil tətbiqlərdə fayl sistemi: Android-də Scoped Storage

Android 10-un buraxılması ilə Google Scoped Storage-ı təqdim etdi — fayl sisteminə məhdud giriş modeli. Tətbiq yalnız öz şəxsi qovluqlarında sərbəst oxuya və yaza bilər. Media faylları (foto, video, audio) üçün ContentResolver vasitəsilə MediaStore API istifadə olunur. İxtiyari sənədlər üçün Intent ACTION_OPEN_DOCUMENT vasitəsilə Storage Access Framework istifadə olunur. Android 11+-da xarici yaddaşın kökünə birbaşa giriş tamamilə qadağandır və bütün tərtibatçılar yeni API-lərdən istifadə etməlidir.

Media faylları ilə işləmək üçün MediaStore API

MediaStore cihazda media fayllarına daxil olmaq üçün sistem ContentProvider-dir. ContentResolver vasitəsilə tətbiq birbaşa yollar əvəzinə fayl Uri tələb edir. MediaStore.Files — bütün fayl növləri üçün, Images — şəkillər üçün, Video — videolar üçün, Audio — audio yazıları üçün. Birgə qovluqlara yazma DISPLAY_NAME, MIME_TYPE və RELATIVE_PATH ilə insert() vasitəsilə həyata keçirilir. Daxil etdikdən sonra tətbiq baytların yazıldığı Uri alır. MIME növləri əsas rol oynayır — səhv növ faylı açarkən xətaya səbəb olacaq.

kotlin
val contentValues = ContentValues().apply {
    put(MediaStore.MediaColumns.DISPLAY_NAME, "report.pdf")
    put(MediaStore.MediaColumns.MIME_TYPE, "application/pdf")
    put(MediaStore.MediaColumns.RELATIVE_PATH, "Documents/Reports")
}

val uri = contentResolver.insert(
    MediaStore.Files.getContentUri("external"),
    contentValues
)

uri?.let {
    contentResolver.openOutputStream(it)?.use { stream ->
        stream.write(pdfBytes)
    }
}

Fayl seçimi üçün Storage Access Framework

SAF icra icazələri olmadan faylları seçmək və yaratmaq üçün vahid interfeys təmin edir. Intent ACTION_OPEN_DOCUMENT Android-də sistem fayl menecerini açır. Seçimdən sonra tətbiq FLAG_GRANT_READ_URI_PERMISSION vasitəsilə müvəqqəti girişlə content:// Uri alır. ACTION_CREATE_DOCUMENT istifadəçinin seçdiyi istənilən xarici yaddaş yerində faylları saxlamağa imkan verir. SAF Android 5+-də işləyir və DocumentsProvider vasitəsilə qoşulmuş bulud provayderlərinin fayllarına giriş təmin edir.

kotlin
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
    addCategory(Intent.CATEGORY_OPENABLE)
    type = "*/*"
    putExtra(Intent.EXTRA_MIME_TYPES, arrayOf(
        "application/pdf",
        "text/plain"
    ))
}
startActivityForResult(intent, REQUEST_CODE)

Mobil tətbiqlərdə sənəd seçimi: sistem seçiciləri

Hər iki platforma istifadəçilərin faylları seçməsi üçün daxili mexanizmlər təmin edir. Mobil tətbiqlərdə sənədlər daimi icazələr olmadan fayla müvəqqəti giriş verən sistem seçiciləri vasitəsilə ötürülür. iOS-da bu UIDocumentPickerViewController, Android-də ACTION_OPEN_DOCUMENT-dir. Mobil tətbiqlərdə sənədlər həm yerli yaddaşdan, həm də bulud xidmətlərindən seçilə bilər. İstifadəçi faylı açıq şəkildə göstərir və tətbiq məhdud etibarlılıq müddəti olan Uri və ya URL alır.

iOS-da UIDocumentPickerViewController

UIDocumentPickerViewController Files App-i açır və bir və ya daha çox sənəd seçməyə imkan verir. Rejimlər: idxal (sandbox-a kopyalama) və açma (təhlükəsizlik əhatəli URL vasitəsilə giriş). Fayl filtrləməsi üçün UTType növlərinin massivi ötürülür — məsələn, .pdf və .plainText. URL aldıqdan sonra tətbiq oxumadan əvvəl startAccessingSecurityScopedResource() və bitirdikdən sonra stopAccessingSecurityScopedResource() çağırmalıdır. stopAccessing çağırmamaq sistem resurs sızmasına səbəb olur. iOS-da mobil tətbiqlərdə sənədlər faylla iş bitdikdən sonra müvəqqəti icazələrin məcburi buraxılmasını tələb edir.

swift
let picker = UIDocumentPickerViewController(
    forOpeningContentTypes: [.pdf, .plainText]
)
picker.allowsMultipleSelection = true
picker.delegate = self
present(picker, animated: true)

// Nümayəndədə girişi buraxma
func documentPicker(
    _ controller: UIDocumentPickerViewController,
    didPickDocumentsAt urls: [URL]
) {
    guard let url = urls.first else { return }
    url.startAccessingSecurityScopedResource()
    defer { url.stopAccessingSecurityScopedResource() }
}

Android-də FileProvider və DocumentProvider

FileProvider tətbiqlər arasında faylları təhlükəsiz şəkildə paylaşmaq üçün ContentProvider-ın alt sinfidir. Göstərilən XML qovluqlarındakı fayllara əsaslanaraq müvəqqəti content:// Uri yaradır. Digər tətbiqlər FLAG_GRANT_READ_URI_PERMISSION ilə Intent vasitəsilə giriş əldə edir. DocumentProvider, FileProvider-dan fərqli olaraq, faylları SAF-da yayımlayır və digər tətbiqlərə tətbiqinizin məzmununu fayl sisteminin bir hissəsi kimi gəzməyə imkan verir. DocumentsProvider-ı tətbiq etmək üçün queryRoots(), queryChildDocuments() və openDocument()-ı ləğv etməli, sonra AndroidManifest.xml-də qeydiyyatdan keçirməlisiniz.

iCloud Drive və bulud fayl sinxronizasiyası

Bulud sinxronizasiyası istifadəçilərə sənədlərə bütün cihazlarında giriş imkanı verir. Mobil tətbiqlərdə fayl sistemi bulud qatı ilə gücləndirilir: iOS-da UIDocument dəyişiklikləri avtomatik izləyir və iCloud vasitəsilə sinxronizasiya edir. Android-də oxşar funksionallıq Google Drive API və ya bulud kökləri olan DocumentsProvider vasitəsilə qurulur. Etibarlı cihazlararası sinxronizasiya qurmaq üçün mobil inkişafda fayl sistemini başa düşmək çox vacibdir.

UIDocument — iOS-da sinxronizasiya

UIDocument iCloud sənədləri ilə işləmək üçün abstrakt sinifdir. Dəyişiklikləri avtomatik saxlayır, məlumatları oxuyur və nümayəndəni yeniləmələr barədə xəbərdar edir. Yazma münaqişəsi zamanı NSFileVersion mövcud versiyaların siyahısını təqdim edir — tərtibatçı ən son versiyanı seçə və ya istifadəçiyə münaqişənin həlli variantlarını göstərə bilər. iCloud Drive üçün layihənin Capabilities hissəsində Ubiquity Container konfiqurasiyası məcburidir. NSFileCoordinator və NSFilePresenter çoxlu thread və ya cihazlardan eyni vaxtda giriş zamanı məlumat yarışlarının qarşısını alır.

Məlumat ehtiyat nüsxəsi və bərpası

iOS avtomatik olaraq Documents qovluğunu iCloud Backup-a daxil edir. Android Auto Backup for Apps ilə işləyir — sistem getFilesDir(), SharedPreferences və SQLite verilənlər bazalarından məlumatları Google Drive-da saxlayır. Keş və xarici fayllar ehtiyat nüsxəyə daxil edilmir. Hər iki platforma istisnaları konfiqurasiya etməyə imkan verir: iOS-da NSURLIsExcludedFromBackupKey vasitəsilə, Android-də XML ehtiyat nüsxə qaydaları konfiqurasiyası vasitəsilə. Şəxsi məlumatları olan faylların şifrələnməsi məcburidir — iOS-da NSDataWritingFileProtectionComplete istifadə edin, Android-də security-crypto kitabxanasından EncryptedFile istifadə edin.

ParametriOSAndroid
Defolt ehtiyat nüsxəDocuments və LibrarygetFilesDir(), SharedPreferences, VB
Fayl istisnasıisExcludedFromBackupKeyXML ehtiyat nüsxə qaydaları (fullBackupContent)
ŞifrələməNSDataWritingFileProtectionCompleteEncryptedFile (security-crypto)
Bulud sinxronizasiyasıUIDocument + iCloudGoogle Drive API + SAF
Avtomatik bərpaQuraşdırmadan sonra iCloud RestoreYenidən quraşdırmada Auto Backup

Tez-tez verilən suallar

iOS-da Sandbox nədir?

Sandbox iOS-da hər bir tətbiq üçün təcrid olunmuş mühitdir. Tətbiq UIDocumentPickerViewController kimi sistem seçicilərindən istifadə etmədən digər tətbiqlərin fayllarına daxil ola bilməz.

Android-də Scoped Storage nədir?

Scoped Storage Android 10+-da fayl sisteminə məhdud giriş modelidir. Tətbiq birbaşa yalnız öz fayllarını oxuyur, media üçün MediaStore API və sənədlər üçün Storage Access Framework istifadə edir.

iOS-da faylı necə seçmək olar?

UIDocumentPickerViewController — Files App və ya iCloud Drive-dan sənəd seçmək üçün sistem seçicisini istifadə edin. Seçimdən sonra müvəqqəti girişlə təhlükəsizlik əhatəli URL alırsınız.

Android 11+-da fayllara necə daxil olmaq olar?

Media faylları üçün MIME növünü göstərərək ContentResolver vasitəsilə MediaStore API-dən istifadə edin. İxtiyari sənədlər üçün Intent ACTION_OPEN_DOCUMENT ilə Storage Access Framework-dən istifadə edin.

Android-də FileProvider nədir?

FileProvider FLAG_GRANT_READ_URI_PERMISSION ilə müvəqqəti content:// Uri vasitəsilə tətbiqlər arasında faylları təhlükəsiz paylaşmaq üçün ContentProvider-ın alt sinfidir.

Xülasə

  • Sandbox — iOS-un təcrid olunmuş fayl sistemi, tətbiq yalnız öz Documents, Caches və Library qovluqlarına daxil ola bilər.
  • FileManager — iOS-da fayl əməliyyatları üçün əsas API. Böyük faylları fon thread-də FileHandle vasitəsilə oxuyun.
  • Scoped Storage — Android 10+-da fayl sistemi modeli, xarici yaddaşa birbaşa girişi MediaStore API və SAF ilə əvəz edir.
  • MediaStore API — Android-də media faylları ilə işləmək üçün sistem ContentProvider. ContentValues ilə insert() vasitəsilə yazma aparılır.
  • Storage Access Framework — Android-də ACTION_OPEN_DOCUMENT və ACTION_CREATE_DOCUMENT vasitəsilə universal sənəd seçmə mexanizmi.
  • UIDocumentPickerViewController — Files App və iCloud Drive-ı açan iOS sistem seçicisi. Təhlükəsizlik əhatəli URL-lərlə işləyir.
  • FileProvider — Müvəqqəti content:// Uri və icra icazələri vasitəsilə Android tətbiqləri arasında təhlükəsiz fayl paylaşımı mexanizmi.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et