File system at mga dokumento sa mobile development: ano ito, anong mga prinsipyo at kung paano ito gumagana

May-akda: IT Sectr Nai-publish: 2026-07-19 Oras ng pagbabasa: 12 min

Ang pagtatrabaho sa file system ay pundasyon ng anumang mobile application. Ang bawat platform ay nag-aalok ng sarili nitong modelo ng pag-access: Ang Sandbox sa iOS ay naghihiwalay ng mga application sa magkakahiwalay na lalagyan, habang ang Scoped Storage sa Android ay naghihigpit sa direktang pag-access sa shared storage. Ayon sa Google Developer Documentation (2026), ang pagpapakilala ng Scoped Storage sa Android 10 ay nangangailangan ng kumpletong pagsusuri ng arkitektura ng pag-iimbak ng data. Sa gabay na ito, tatalakayin natin ang FileManager, MediaStore API, Storage Access Framework at DocumentProvider para sa parehong platform.

Mga Pangunahing Punto

  • Sandbox — isang nakahiwalay na iOS na kapaligiran kung saan ang bawat app ay gumagana lamang sa sarili nitong direktoryo nang walang access sa data ng ibang mga app.
  • Scoped Storage — modelo ng Android 10+ na naghihigpit sa direktang pag-access sa panlabas na storage sa pamamagitan ng MediaStore API at SAF.
  • FileManager — ang pangunahing klase ng iOS para sa mga operasyon ng file: paglikha, pagbasa, pagkopya, paglipat at pagtanggal.
  • Storage Access Framework — ang mekanismo ng sistema ng Android para sa pagpili ng mga dokumento gamit ang Intent ACTION_OPEN_DOCUMENT.
  • DocumentProvider — isang bahagi ng Android para sa pag-publish ng mga file ng app sa shared file system sa pamamagitan ng SAF.

Ano ang file system sa mobile apps?

Ang file system sa mga mobile application ay isang set ng mga API, panuntunan sa seguridad at mga hadlang na tumutukoy kung paano iniimbak at ina-access ang data sa mga iOS at Android device. Hindi tulad ng mga desktop operating system, ang mga mobile platform ay naghihiwalay sa bawat application upang protektahan ang data ng gumagamit mula sa hindi awtorisadong pagbasa ng ibang mga programa.

Mga pagkakaiba sa arkitektura sa pagitan ng iOS at Android

Ginagamit ng iOS ang modelo ng Sandbox, kung saan ang bawat app ay umiiral sa sarili nitong lalagyan na may mahigpit na limitadong mga pahintulot. Bago ang bersyon 10, ang Android ay nagbigay ng buong access sa panlabas na storage, ngunit sa pagpapakilala ng Scoped Storage, ang approach ay naging mas malapit sa iOS. Ang pangunahing pagkakaiba ay ang iOS ay ganap na naghihiwalay sa file system, habang ang Android ay nag-aalok ng ilang antas ng pag-access: isang pribadong direktoryo, pampublikong MediaStore at pansamantalang access sa pamamagitan ng SAF.

Mga pangunahing uri ng storage

Ang mga mobile application ay gumagamit ng tatlong uri ng pag-iimbak ng data. Pribadong storage — isang direktoryo na naa-access lamang ng app para sa mga panloob na file at cache. Shared storage — mga media file sa pamamagitan ng MediaStore (Android) o Files App (iOS). Cloud storage — iCloud Drive at Google Drive para sa pag-sync sa pagitan ng mga device. Ang bawat uri ay may sariling mga limitasyon sa laki, buhay ng file at mga kondisyon ng pag-access.

Uri ng storageiOSAndroid
PribadoDocuments, Library, CachesgetFilesDir(), getCacheDir()
Shared mediaPHPhotoLibrary sa pamamagitan ng pumipiliMediaStore API (ContentResolver)
Shared na dokumentoFiles App sa pamamagitan ng UIDocumentPickerStorage Access Framework (SAF)
CloudiCloud Drive (UIDocument)Google Drive API
CacheDirektoryo ng Caches, nililinis ng sistemagetCacheDir(), getExternalCacheDir()

File system sa mobile development: Sandbox sa iOS

Sandbox ay ang arkitektura ng seguridad ng iOS na naghihiwalay sa bawat application. Ang isang app ay maaari lamang magbasa at magsulat sa loob ng sarili nitong sandbox. Upang ma-access ang mga contact, larawan o file mula sa ibang mga app, dapat gamitin ang mga pumipili ng sistema: UIImagePickerController o UIDocumentPickerViewController. Ang access sa Files App ay na-configure sa pamamagitan ng flag na UIFileSharingEnabled sa Info.plist. Ang file system sa mobile development sa iOS ay nangangailangan ng pag-unawa sa istruktura ng direktoryo at pagpili ng tamang lokasyon para sa bawat uri ng data.

Istruktura ng direktoryo ng sandbox

Ang iOS sandbox ay binubuo ng ilang karaniwang direktoryo. Documents — para sa mga file ng gumagamit, kasama sa iCloud Backup. Caches — para sa pansamantalang data na maaaring tanggalin ng sistema kapag mababa ang storage. Temporary — para sa mga file ng kasalukuyang session, nililinis sa pag-restart. Application Support — para sa panloob na data ng app na nakatago mula sa gumagamit. Ang pagpili ng maling direktoryo ay humahantong sa mga problema: ang pag-save ng cache sa Documents ay nag-aaksaya ng espasyo sa iCloud at lumalabag sa mga alituntunin ng Apple sa file system.

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 = "Содержимое файла"

// Atomikong pagsulat na may encryption
try text.write(
    to: fileURL,
    atomically: true,
    encoding: .utf8
)

FileManager — ang pangunahing API para sa mga operasyon ng file

Ang klase na FileManager ay nagbibigay ng kumpletong set ng mga pamamaraan para sa pamamahala ng mga file sa iOS. Ang FileManager.default ay isang thread-safe na singleton na angkop para sa karamihan ng mga operasyon. Ang mga pamamaraan tulad ng fileExists(atPath:), createDirectory(at:withIntermediateDirectories:attributes:), copyItem(at:to:) at removeItem(at:) ay sumasaklaw sa mga pangunahing sitwasyon. Ang mga operasyon ng file na mas malaki sa 1 MB ay dapat isagawa sa isang background thread sa pamamagitan ng DispatchQueue.global(). Para sa streaming ng malalaking volume, gamitin ang FileHandle sa halip na i-load ang buong file sa memorya.

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)
}

File system sa mobile apps: Scoped Storage sa Android

Sa paglabas ng Android 10, ipinakilala ng Google ang Scoped Storage — isang modelo ng limitadong pag-access sa file system. Ang isang app ay maaari lamang malayang magbasa at magsulat sa mga pribadong direktoryo nito. Para sa mga media file (larawan, video, audio), ginagamit ang MediaStore API sa pamamagitan ng ContentResolver. Para sa mga arbitraryong dokumento, ginagamit ang Storage Access Framework sa pamamagitan ng Intent ACTION_OPEN_DOCUMENT. Sa Android 11+, ang direktang pag-access sa root ng panlabas na storage ay ganap na ipinagbabawal at lahat ng developer ay dapat gumamit ng mga bagong API.

MediaStore API para sa pagtatrabaho sa mga media file

MediaStore ay isang system ContentProvider para sa pag-access ng mga media file sa device. Sa pamamagitan ng ContentResolver, ang app ay humihiling ng Uri ng mga file sa halip na direktang mga path. MediaStore.Files — para sa lahat ng uri ng file, Images — para sa mga larawan, Video — para sa video, Audio — para sa mga audio recording. Ang pagsulat sa mga shared na direktoryo ay ginagawa sa pamamagitan ng insert() na may DISPLAY_NAME, MIME_TYPE at RELATIVE_PATH. Pagkatapos ng pagpasok, ang app ay tumatanggap ng Uri kung saan isinusulat ang mga byte. Ang mga uri ng MIME ay may mahalagang papel — ang maling uri ay magdudulot ng error kapag binubuksan ang file.

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)
    }
}

Storage Access Framework para sa pagpili ng file

Ang SAF ay nagbibigay ng pinag-isang interface para sa pagpili at paglikha ng mga file nang walang runtime na mga pahintulot. Intent ACTION_OPEN_DOCUMENT ay nagbubukas ng system file manager sa Android. Pagkatapos ng pagpili, ang app ay tumatanggap ng content:// Uri na may pansamantalang access sa pamamagitan ng FLAG_GRANT_READ_URI_PERMISSION. Ang ACTION_CREATE_DOCUMENT ay nagpapahintulot sa pag-save ng mga file sa anumang panlabas na lokasyon ng storage na pinili ng gumagamit. Ang SAF ay gumagana sa Android 5+ at nagbibigay ng access sa mga file mula sa mga cloud provider na konektado sa pamamagitan ng DocumentsProvider.

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)

Pagpili ng dokumento sa mobile apps: mga pumipili ng sistema

Ang parehong platform ay nagbibigay ng mga built-in na mekanismo para sa mga gumagamit upang pumili ng mga file. Ang mga dokumento sa mga mobile application ay ipinapasa sa pamamagitan ng mga pumipili ng sistema na nagbibigay ng pansamantalang access sa isang file nang walang permanenteng pahintulot. Sa iOS, ito ay UIDocumentPickerViewController; sa Android, ACTION_OPEN_DOCUMENT. Ang mga dokumento sa mga mobile application ay maaaring piliin mula sa parehong lokal na storage at mga serbisyo sa cloud. Ang gumagamit ay tahasang tumutukoy ng file at ang app ay tumatanggap ng Uri o URL na may limitadong panahon ng bisa.

UIDocumentPickerViewController sa iOS

UIDocumentPickerViewController ay nagbubukas ng Files App at nagpapahintulot sa pagpili ng isa o higit pang mga dokumento. Mga mode: import (pagkopya sa sandbox) at buksan (access sa pamamagitan ng security-scoped URL). Para sa pag-filter ng file, isang array ng mga uri ng UTType ang ipinapasa — halimbawa, .pdf at .plainText. Pagkatapos matanggap ang URL, dapat tawagan ng app ang startAccessingSecurityScopedResource() bago magbasa at stopAccessingSecurityScopedResource() pagkatapos matapos. Ang hindi pagtawag sa stopAccessing ay humahantong sa pagtagas ng mga mapagkukunan ng sistema. Ang mga dokumento sa mga mobile application sa iOS ay nangangailangan ng sapilitang pagpapalaya ng mga pansamantalang pahintulot pagkatapos matapos ang pagtatrabaho sa file.

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

// Pagpapalaya ng access sa delegado
func documentPicker(
    _ controller: UIDocumentPickerViewController,
    didPickDocumentsAt urls: [URL]
) {
    guard let url = urls.first else { return }
    url.startAccessingSecurityScopedResource()
    defer { url.stopAccessingSecurityScopedResource() }
}

FileProvider at DocumentProvider sa Android

FileProvider ay isang subclass ng ContentProvider para sa ligtas na pagbabahagi ng mga file sa pagitan ng mga app. Ito ay bumubuo ng pansamantalang content:// Uri batay sa mga file mula sa tinukoy na mga direktoryo ng XML. Ang ibang mga app ay nakakakuha ng access sa pamamagitan ng Intent na may FLAG_GRANT_READ_URI_PERMISSION. Ang DocumentProvider, hindi tulad ng FileProvider, ay nag-publish ng mga file sa SAF at nagpapahintulot sa ibang mga app na mag-browse ng nilalaman ng iyong app bilang bahagi ng file system. Upang ipatupad ang DocumentsProvider, kailangan mong i-override ang queryRoots(), queryChildDocuments() at openDocument(), pagkatapos ay irehistro ito sa AndroidManifest.xml

iCloud Drive at pag-sync ng file sa cloud

Ang pag-sync sa cloud ay nagbibigay sa mga gumagamit ng access sa mga dokumento sa lahat ng kanilang mga device. Ang file system sa mga mobile application ay pinahusay ng isang cloud layer: Ang UIDocument sa iOS ay awtomatikong sumusubaybay ng mga pagbabago at nag-sync ng mga ito sa pamamagitan ng iCloud. Sa Android, ang katulad na pag-andar ay binuo sa pamamagitan ng Google Drive API o DocumentsProvider na may mga cloud root. Ang pag-unawa sa file system sa mobile development ay mahalaga para sa pagbuo ng maaasahang pag-sync sa pagitan ng mga device.

UIDocument — Pag-sync sa iOS

UIDocument ay isang abstract na klase para sa pagtatrabaho sa mga dokumento ng iCloud. Awtomatiko itong nag-save ng mga pagbabago, nagbabasa ng data at nagpapaalam sa delegado tungkol sa mga update. Sa kaso ng salungatan sa pagsulat, ang NSFileVersion ay nagbibigay ng listahan ng mga magagamit na bersyon — ang developer ay maaaring pumili ng pinakabago o magpakita sa gumagamit ng mga opsyon sa paglutas ng salungatan. Ang pag-configure ng Ubiquity Container sa Capabilities ng proyekto ay sapilitan para sa iCloud Drive. Ang NSFileCoordinator at NSFilePresenter ay pumipigil sa mga data race sa panahon ng sabay-sabay na pag-access mula sa maraming thread o device.

Backup at pagpapanumbalik ng data

Awtomatikong isinasama ng iOS ang direktoryo ng Documents sa iCloud Backup. Ang Android ay gumagana sa Auto Backup for Apps — ang sistema ay nag-save ng data mula sa getFilesDir(), SharedPreferences at mga database ng SQLite sa Google Drive. Ang cache at mga panlabas na file ay hindi kasama sa backup. Ang parehong platform ay nagpapahintulot sa pag-configure ng mga eksepsiyon: sa iOS sa pamamagitan ng NSURLIsExcludedFromBackupKey, sa Android sa pamamagitan ng XML na pagsasaayos ng mga panuntunan sa backup. Ang pag-encrypt ng mga file na may personal na data ay sapilitan — sa iOS gamitin ang NSDataWritingFileProtectionComplete, sa Android gamitin ang EncryptedFile mula sa library na security-crypto.

ParameteriOSAndroid
Default na backupDocuments at LibrarygetFilesDir(), SharedPreferences, DB
Eksepsiyon ng fileisExcludedFromBackupKeyMga panuntunan ng XML backup (fullBackupContent)
EncryptionNSDataWritingFileProtectionCompleteEncryptedFile (security-crypto)
Cloud syncUIDocument + iCloudGoogle Drive API + SAF
Awtomatikong pagpapanumbalikiCloud Restore pagkatapos ng pag-installAuto Backup sa muling pag-install

Mga Madalas Itanong

Ano ang Sandbox sa iOS?

Sandbox ay isang nakahiwalay na kapaligiran para sa bawat app sa iOS. Ang app ay hindi maaaring ma-access ang mga file ng ibang mga app nang hindi gumagamit ng mga pumipili ng sistema tulad ng UIDocumentPickerViewController.

Ano ang Scoped Storage sa Android?

Scoped Storage ay isang modelo ng limitadong pag-access sa file system sa Android 10+. Direktang binabasa lamang ng app ang sarili nitong mga file, gumagamit ng MediaStore API para sa media at Storage Access Framework para sa mga dokumento.

Paano pumili ng file sa iOS?

Gamitin ang UIDocumentPickerViewController — ang pumipili ng sistema para sa pagpili ng mga dokumento mula sa Files App o iCloud Drive. Pagkatapos ng pagpili, makakatanggap ka ng security-scoped URL na may pansamantalang access.

Paano ma-access ang mga file sa Android 11+?

Para sa mga media file, gamitin ang MediaStore API sa pamamagitan ng ContentResolver na may tinukoy na uri ng MIME. Para sa mga arbitraryong dokumento, gamitin ang Storage Access Framework na may Intent ACTION_OPEN_DOCUMENT.

Ano ang FileProvider sa Android?

FileProvider ay isang subclass ng ContentProvider para sa ligtas na pagbabahagi ng mga file sa pagitan ng mga app sa pamamagitan ng pansamantalang content:// Uri na may FLAG_GRANT_READ_URI_PERMISSION.

Buod

  • Sandbox — ang nakahiwalay na file system ng iOS kung saan ang isang app ay maaari lamang ma-access ang sarili nitong mga direktoryo ng Documents, Caches at Library.
  • FileManager — ang pangunahing API para sa mga operasyon ng file sa iOS. Basahin ang malalaking file sa pamamagitan ng FileHandle sa isang background thread.
  • Scoped Storage — ang modelo ng file system sa Android 10+ na pumapalit sa direktang pag-access sa panlabas na storage ng MediaStore API at SAF.
  • MediaStore API — isang system ContentProvider para sa pagtatrabaho sa mga media file sa Android. Ang pagsulat ay ginagawa sa pamamagitan ng insert() na may ContentValues.
  • Storage Access Framework — isang unibersal na mekanismo ng pagpili ng dokumento sa Android sa pamamagitan ng ACTION_OPEN_DOCUMENT at ACTION_CREATE_DOCUMENT.
  • UIDocumentPickerViewController — ang pumipili ng sistema ng iOS na nagbubukas ng Files App at iCloud Drive. Gumagana sa mga security-scoped URL.
  • FileProvider — isang mekanismo para sa ligtas na pagbabahagi ng file sa pagitan ng mga Android app sa pamamagitan ng pansamantalang content:// Uri at runtime na mga pahintulot.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto