Un obiect de tipul de fișier este perfect pentru citirea și scrierea unor cantități mari de date, de la început până la sfârșit. Acest lucru poate fi de exemplu, imagini sau alte fișiere care sunt transferate prin intermediul rețelei.
Acum ne uităm la punerea în aplicare a operațiunilor de bază care implică utilizarea fișierelor în aplicația dumneavoastră. Presupunem că sunteți deja familiarizați cu caracteristicile de bază ale sistemului de fișiere Linux, precum și de intrare API / ieșire java.io
Selecția între stocarea internă și externă
Toate dispozitivele care rulează Android sunt două spații pentru stocarea fișierelor: stocare internă și externă. Aceste nume au fost pe primele dispozitive bazate pe Android. In majoritatea dispozitivelor utilizate memorie volatilă (stocare internă) și dispozitive detașabile, cum ar fi carduri microSD (bolta externă). Pe unele dispozitive, zona de depozitare permanentă este împărțită între secțiunile interioare și exterioare, astfel încât chiar și fără un card SD, vom fi „interior“ și „exterior“ spațiu. Astfel, pentru API-ul este lipsit de importanță dacă spațiul extern pe dispozitiv amovibil sau nu. Lista oferă informații generale despre ambele tipuri de spațiu:
Sfat: Deși aplicațiile sunt instalate în mod implicit în stocarea internă, puteți specifica locația de stocare cu Android atributul: installLocation în fișierul manifest. Utilizatorii vor aprecia că ați avut grijă de ei și setați această opțiune atunci când dimensiunea fișierului a cererii dvs. APK va fi mai mult spațiu liber de stocare internă. Mai multe informații despre această opțiune, consultați aplicații Instalare locație.
Obținerea drepturilor la stocarea externă
Pentru a scrie în stocarea externă, trebuie să solicitați drepturile WRITE_EXTERNAL_STORAGE în fișierul manifest:
Cu toate acestea, în cazul în care aplicația utilizează un WRITE_EXTERNAL_STORAGE permisiunea de a scrie. permisiunile de citire sunt definite în mod explicit.
Nu aveți nevoie pentru a primi permisiuni suplimentare pentru fișierele stoca în memoria internă. Aplicațiile au întotdeauna dreptul de a scrie și citi din directorul de stocare intern.
Salvarea fișierelor în memoria internă
Când salvați un fișier în magazia, puteți obține directorul corespunzător ca un obiect de tipul de fișier. provocând una dintre metodele:
getFilesDir () Returnează un obiect fișier care reprezintă directorul de stocare internă pentru aplicația dumneavoastră. getCacheDir () Returnează un obiect fișier care reprezintă directorul unității interne de stocare pentru a stoca fișiere cache temporare. Asigurați-vă că pentru a elimina toate fișierele de îndată ce nu mai este nevoie de ele și a stabilit o limită rezonabilă cu privire la cantitatea de memorie pe care îl utilizați la un moment dat, cum ar fi 1MB. În cazul în care sistemul rămâne puțin spațiu pentru depozitare, se poate elimina fișierele temporare, fără avertisment.
Pentru a crea un nou fișier într-un director, puteți utiliza File constructor (). trecându-l un obiect de tip de fișier, obținut printr-o metodă corespunzătoare:
Salvarea fișierelor în stocarea externă
Dacă nici unul dintre numele de director predefinite nu se potrivesc, puteți getExternalFilesDir () metoda pentru a trece nul. Metoda returnează directorul rădăcină al aplicației private, situate în stocarea externă.
Amintiți-vă că getExternalFilesDir () creează un director în directorul care urmează să fie eliminate împreună cu cererea. În cazul în care fișierele trebuie să fie accesibile după îndepărtarea cererii, cum ar fi imagini de la aparatul de fotografiat, utilizați metoda getExternalStoragePublicDirectory ().
Este important să se utilizeze un nume de director reprezentat constante ale API, cum ar fi DIRECTORY_PICTURES indiferent dacă a fost folosită metoda getExternalFilesDir () sau getExternalStoragePublicDirectory (). Predefinite nume de directoare permit sistemului să proceseze corect fișierele. De exemplu, fișierele stocate în directorul vor fi marcate scanerului mass-media de sistem DIRECTORY_RINGTONES ca ton de apel, și nu ca fișierele de muzică.
Cerere de spațiu
Dacă știți dinainte cât de multe date trebuie să salvați, puteți afla dacă există suficient spațiu, fără a aștepta IOException excepție. prin getFreeSpace () sau getTotalSpace (). Aceste metode permit să se cunoască numărul de spațiu liber și total pe secțiunea de depozitare, respectiv. Această informație este de asemenea utilă pentru a evita umplerea secțiunii de depozitare peste un anumit prag.
Cu toate acestea, sistemul nu garantează că vă puteți înregistra la fel de mult ca și arată getFreeSpace metoda (). În cazul în care spațiul un pic mai mult decât vă doriți să le păstrați, sau în cazul în care sistemul de fișiere este umplut cu mai puțin de 90%, poate, probabil, în continuare, în caz contrar este mai bine să se abțină.
Notă: nu aveți nevoie pentru a verifica cantitatea de spațiu liber pentru a înregistra fișierul. Puteți încerca să scrie fișierul și mâner excepția IOException. Puteți, de asemenea, nu știu exact cât de mult spațiu ai nevoie. De exemplu, dacă modificați codificarea fișierului înainte de a salva, de exemplu, converti PNG la JPEG, nu puteți cunoaște dimensiunea finală a fișierului.
Ștergerea unui fișier
îndepărtați întotdeauna fișierele în cazul în care acestea nu mai sunt utilizate. Cel mai simplu mod de a elimina fișierul deschis - apel șterge () metoda pentru a-l: