Documents Directory: ano ito, layunin at access sa mga file

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

Documents Directory — ay isang direktoryo sa sandbox ng iOS application, na nilalayon para sa pag-iimbak ng data ng gumagamit na dapat mapanatili sa pagitan ng mga session ng application at ma-access ng gumagamit sa pamamagitan ng iTunes File Sharing at iCloud. Ayon sa Apple File System Programming Guide (2024), ang nilalaman ng direktoryong ito ay awtomatikong kasama sa backup ng iCloud at iTunes, kaya mahalaga para sa developer na may kamalayang pumili kung anong data ang ilalagay sa Documents. Hindi tulad ng Caches Directory, ang mga file sa Documents ay hindi tinatanggal ng system kapag kulang ang espasyo — ang responsibilidad para sa pamamahala ng laki ay nasa application.

Mga Pangunahing Punto

  • Documents Directory — pangunahing direktoryo para sa mga file ng gumagamit na dapat mapanatili at ma-access sa pamamagitan ng iTunes.
  • Ang data mula sa Documents ay awtomatikong naba-back up sa iCloud at iTunes — isaalang-alang ito kapag nagdidisenyo ng imbakan.
  • Ang system ay hindi nagtatanggal ng mga file mula sa Documents kapag naglilinis ng cache — ang developer ang responsable sa pagpapalaya ng espasyo.
  • Ang path patungo sa direktoryo ay makukuha sa pamamagitan ng NSSearchPathForDirectoriesInDomains na may NSDocumentDirectory o sa pamamagitan ng FileManager.urls.
  • Para sa malalaking file na maaaring maibalik, gamitin ang Caches Directory — upang hindi kumain ng espasyo sa iCloud backup.

Ano ang Documents Directory sa iOS?

Documents Directory — ay isang direktoryo sa loob ng sandbox ng iOS application, na nilalayon para sa pag-iimbak ng data ng gumagamit na dapat mapanatili sa pagitan ng mga paglunsad at ma-access ng gumagamit. Ang bawat application ay nakakakuha ng sarili nitong nakahiwalay na sandbox, at ang Documents ay isa sa mga pangunahing direktoryo kasama ng Caches, tmp, at Library.

Gumagamit ang iOS ng mahigpit na sandbox: ang application ay walang access sa file system ng iba pang mga application at system directory nang walang mga espesyal na pahintulot. Documents Directory — ang tanging direktoryo na ang nilalaman ay maaaring matingnan ng gumagamit sa pamamagitan ng iTunes File Sharing (kapag na-activate ang kaukulang key na UIFileSharingEnabled sa Info.plist).

Ayon sa datos ng Apple WWDC 2023, mahigit 85% ng mga application sa App Store ang gumagamit ng Documents Directory para mag-imbak ng kahit isang uri ng data ng gumagamit — mula sa mga na-export na PDF hanggang sa mga naka-save na file ng laro at mga na-export na larawan.

Dapat maunawaan ng developer: ang mga file sa Documents ay awtomatikong kasama sa backup ng iCloud at iTunes. Kung ang application ay nag-iimbak ng malaking dami ng data na maaaring maibalik sa Documents (halimbawa, cache ng mga larawan o pansamantalang file), ito ay hahantong sa hindi makatuwirang paggamit ng espasyo sa iCloud storage ng gumagamit.

Paano makuha ang path sa Documents Directory

Sa Swift, ang path sa Documents Directory ay makukuha sa pamamagitan ng FileManager. Inirerekomenda ng Apple ang paggamit ng URL-based API sa halip na string-based para sa mas mahusay na compatibility sa mga modernong kakayahan ng iOS.

swift
import Foundation

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

// Gumawa ng file sa Documents
let fileURL = documentsURL.appendingPathComponent("report.pdf")
let data = Data("Hello, world!".utf8)
try data.write(to: fileURL)

Gumagamit ang Objective-C ng NSSearchPathForDirectoriesInDomains — isang mas luma ngunit suportado pa ring approach na nagbabalik ng string path sa halip na URL.

objective-c
@import Foundation;

NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSDocumentDirectory,
    NSUserDomainMask,
    YES
);
NSString *documentsPath = paths.firstObject;
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"report.pdf"];

Ang mga modernong proyekto sa Swift ay dapat gumamit ng FileManager.urls dahil ang metodong ito ay nagbabalik ng URL, hindi string, na nagbabawas ng panganib ng mga error sa pag-encode ng path at ginagawang mas type-safe ang code.

Anong data ang iimbak sa Documents

Documents Directory ay nilalayon para sa data na nilikha ng gumagamit o kailangan ng gumagamit sa tahasang anyo. Itinatampok ng Apple ang ilang kategorya na angkop para sa direktoryong ito.

Mga dokumento at file ng gumagamit

Mga file na ginagawa o ini-import ng gumagamit — mga text document, PDF, larawan, na-export na ulat, backup file. Ang data na ito ay may direktang halaga para sa gumagamit, at ang pagkawala nito ay magiging kritikal.

Mga save ng laro at estado ng application

Mga save ng laro, mga file ng estado ng application, mga na-export na proyekto — lahat ng inaasahan ng gumagamit na maibalik pagkatapos muling i-install ang application. Gayunpaman, para sa kritikal na data, inirerekomenda ring gamitin ang iCloud Key-Value Storage o Core Data na may iCloud synchronization.

Uri ng DataAngkop para sa DocumentsAlternatibo
PDF at mga text documentOo
Cache ng mga larawanHindiCaches Directory
Mga save ng laroOoiCloud KVS
Mga log at data ng debugHindiCaches o tmp
Na-export na mga ulatOo

Ang pangunahing pamantayan: kung ang data ay maaaring maibalik mula sa network o muling likhain — ang lugar nito ay nasa Caches, hindi sa Documents. Bawat gigabyte sa Documents ay isang gigabyte sa iCloud backup ng gumagamit.

Backup at synchronization

iOS ay awtomatikong isinasama ang nilalaman ng Documents Directory sa backup kapag ang device ay konektado sa iTunes o kapag nag-sync sa iCloud. Ang pag-uugaling ito ay hindi maaaring i-off sa antas ng direktoryo — tanging file-por-file sa pamamagitan ng attribute na NSURLIsExcludedFromBackupKey.

Simula sa iOS 5.0, sinimulan ng Apple na tanggihan ang mga application na nag-iimbak ng malaking dami ng data na maaaring maibalik sa Documents. Rekomendasyon ng Apple: ang mga file na maaaring i-download muli ay dapat itago sa Caches Directory na may flag ng pagbubukod mula sa backup.

swift
import Foundation

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

// Ibukod ang file mula sa iCloud backup
var resourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true

var fileURL = documentsURL.appendingPathComponent("cached_data.json")
try fileURL.setResourceValues(resourceValues)

Gumagana ang iCloud synchronization sa pamamagitan ng NSUbiquitousContainer kung ang application ay gumagamit ng iCloud Documents. Sa kasong ito, ang mga file mula sa Documents Directory ay awtomatikong nasi-sync sa pagitan ng mga device ng gumagamit. Para sa mga application na walang iCloud, ang synchronization ay limitado sa backup.

Documents Directory vs Caches Directory

Ang pagkakaiba sa pagitan ng Documents at Caches — isa sa mga pinakakaraniwang maling kuru-kuro sa mga baguhang iOS developer. Ang pangunahing pagkakaiba: ang system ay maaaring anumang oras na tanggalin ang mga file mula sa Caches upang magbakante ng espasyo, ngunit hindi kailanman ginagalaw ang Documents nang walang kaalaman ng gumagamit.

KatangianDocuments DirectoryCaches Directory
Backup sa iCloudOo (default)Hindi
Pagtatanggal ng systemHindi kailanmanKapag kulang ang espasyo
iTunes File SharingOo (kapag naka-activate ang flag)Hindi
LayuninData ng gumagamitCache, pansamantalang data
Pagbawi ng dataNangangailangan ng pagbawiMaaaring i-download muli mula sa network

Ayon sa Apple Developer Documentation (2024), ang hindi wastong paggamit ng Documents Directory — isa sa mga karaniwang dahilan ng pagtanggi ng application sa review: kung ang application ay nag-iimbak ng higit sa ilang megabyte ng data na maaaring maibalik sa Documents, inirerekomenda ng Apple na ilipat ang mga ito sa Caches o ilapat ang NSURLIsExcludedFromBackupKey.

Praktikal na tuntunin: kung ang gumagamit ay malulungkot sa pagkawala ng file — itago sa Documents. Kung ang file ay maaaring i-download muli o likhain — itago sa Caches.

Pinakamahuhusay na kasanayan sa pagtatrabaho sa Documents

Ang mga bihasang iOS developer ay bumuo ng ilang mga patakaran na tumutulong upang maiwasan ang mga problema sa Documents Directory sa lahat ng yugto ng lifecycle ng application — mula sa pag-develop hanggang sa pag-publish sa App Store.

Pagsubaybay sa laki ng direktoryo

Regular na suriin ang laki ng Documents Directory sa pamamagitan ng FileManager.enumerator(at:includingPropertiesForKeys:). Kung ang laki ay lumampas sa 100 MB para sa data na hindi data ng gumagamit — ito ay dahilan upang muling isaalang-alang ang arkitektura ng imbakan.

Pagbubukod ng mga nababawing file mula sa backup

Para sa lahat ng file na maaaring i-download muli mula sa network, itakda ang isExcludedFromBackup = true. Binabawasan nito ang karga sa iCloud storage ng gumagamit at binabawasan ang panganib ng pagtanggi ng application ng App Review.

Paglipat sa pag-update

Kapag binabago ang format ng data sa Documents, maglaan ng migration: huwag tanggalin ang mga lumang file hangga't hindi ka sigurado na ang mga bago ay naayos nang tama. Gumamit ng mga subdirectory na tiyak sa bersyon.

swift
import Foundation

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

let versionDir = documentsURL.appendingPathComponent("v2")
try FileManager.default.createDirectory(
    at: versionDir,
    withIntermediateDirectories: true
)

Ang pagsunod sa mga kasanayang ito ay nagbabawas ng panganib ng pagkawala ng data ng gumagamit, nagpapaliit ng laki ng iCloud backup, at nagpapadali sa pagdaan sa review sa App Store.

Mga Madalas Itanong

Maaari bang ma-access ng gumagamit ang Documents Directory nang walang iTunes?

Oo, sa pamamagitan ng Files — ang built-in na iOS application mula sa bersyon 11. Kapag na-activate ang key na UIFileSharingEnabled sa Info.plist, ang nilalaman ng Documents Directory ay ipinapakita sa application na Files sa seksyong “Sa Aking iPhone”. Maaaring tingnan, kopyahin, at tanggalin ng gumagamit ang mga file.

Ano ang mangyayari sa Documents Directory kapag tinanggal ang application?

Ang buong sandbox ng application, kabilang ang Documents Directory, Caches, tmp, at Library, ay ganap na tinatanggal mula sa device. Ang mga backup sa iCloud ay nananatili hanggang sa pagbawi o manu-manong pagtanggal. Kapag muling na-install, ang application ay magsisimula sa malinis na sandbox.

Paano suriin ang laki ng Documents Directory sa code?

Gamitin ang FileManager.enumerator upang lakarin ang lahat ng file sa direktoryo at buuin ang kanilang mga laki. Para sa bawat file, kunin ang attribute na .fileSize sa pamamagitan ng resourceValues(forKeys:). Bilang alternatibo, gamitin ang URLResourceKey.fileSizeKey at .directoryEnumerationResults.

Maaari bang mag-imbak ng Core Data SQLite database sa Documents?

Bilang default, ang Core Data ay lumilikha ng SQLite file sa Library/Application Support, hindi sa Documents. Ang paglipat ng database sa Documents ay hindi inirerekomenda — ito ay isasama sa iTunes File Sharing at maaaring aksidenteng tanggalin o baguhin ng gumagamit. Pagbubukod: kung ang application ay tahasang nagbibigay sa gumagamit ng access sa data sa pamamagitan ng Core Data.

Ano ang UIFileSharingEnabled at paano ito i-activate?

UIFileSharingEnabled (Application supports iTunes file sharing) — isang boolean key sa Info.plist. Kapag nakatakda sa YES, ang gumagamit ay maaaring kumopya ng mga file mula sa Documents Directory sa pamamagitan ng iTunes at Files. Idagdag ang key sa Info.plist: UIFileSharingEnabled = YES. I-activate lamang kung ang application ay talagang lumilikha ng mga dokumento ng gumagamit.

Buod

  • Documents Directory — pangunahing lugar para sa data ng gumagamit sa iOS application na dapat mapanatili at i-back up.
  • Ang path sa direktoryo ay makukuha sa pamamagitan ng FileManager.urls(for: .documentDirectory) sa Swift o NSSearchPathForDirectoriesInDomains sa Objective-C.
  • Lahat ng file mula sa Documents ay default na kasama sa iCloud at iTunes backup — gamitin ang isExcludedFromBackup para sa pagbubukod.
  • Ang system ay hindi nagtatanggal ng mga file mula sa Documents nang mag-isa, hindi tulad ng Caches Directory.
  • Para sa data na maaaring mabawi (cache, pansamantalang file) gamitin ang Caches Directory, hindi Documents.
  • Ang key na UIFileSharingEnabled ay nagbubukas ng access sa Documents sa pamamagitan ng iTunes at Files application — gamitin nang may kamalayan.
  • Subaybayan nang regular ang laki ng Documents Directory: ang paglampas sa 100 MB para sa hindi kritikal na data ay isang problemang arkitektura.

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

Basahin din