Android Intern lagring Tutorial

Android gir mange typer lagring for applikasjoner til å lagre sine data. Disse lagring steder deles preferanser, intern og ekstern lagring, SQLite lagring og lagring via nettverkstilkobling.

I dette kapittelet skal vi se på det interne lagrings. Intern lagring er lagring av private data på enhetens minne.

Som standard disse filene er private, og er tilgjengelig med bare din søknad og får slettet, når brukeren slette din søknad.

Skrive fil

For å bruke intern lagring for å skrive noen data i filen og henter den openFileOutput () metode med navnet på filen og modus. Modusen kan være private, offentlige e.t.c. Syntaksen er gitt nedenfor −
Fileoutputstream FOUT = openFileOutput ("filnavn her", MODE_WORLD_READABLE);

Metoden openFileOutput () returnerer en forekomst av Fileoutputstream. Så du får det i objektet av Fileinputstream. Etter det kan du ringe skrive metode for å skrive data på filen. Syntaksen er gitt nedenfor −
String str = "data"; fOut.write (str.getBytes ()); fOut.close ();
Lese fil

For å lese fra filen du nettopp opprettet, ring openFileInput () metode med navnet på filen. Den returnerer en forekomst av Fileinputstream. Syntaksen er gitt nedenfor −
Fileinputstream fin = openFileInput (fil);

Etter det, kan du ringe lese metode for å lese ett tegn om gangen fra filen, og så kan du skrive den ut. Syntaksen er gitt nedenfor −
int c; String temp = ""; while ((c = fin.read ()) = -1) {temp = temp + Character.toString ((char) c); } //streng temp inneholder alle data fra file.fin.close ();

Bortsett fra de metodene for skrive- og nær, er det andre metoder som tilbys av Fileoutputstream
klassen for bedre skrive filer. Disse metodene er listet nedenfor −
Sr.NoMethod & description1 Fileoutputstream (File fil, boolean append)

Denne metoden konstruerer en ny Fileoutputstream som skriver til fil.
2 getChannel ()

Denne metoden returnerer en skrive -bare FileChannel som deler sin posisjon med denne strømmen
3 getFD ()

Denne metoden returnerer den underliggende filen descriptor
4 write (byte [] buffer, int byteOffset, int byteCount)

Denne metoden Skriver telle bytes fra byte array buffer som starter på stillingen utlignet til denne strømmen

Bortsett fra de metoder for lese- og nær, er det andre metoder som tilbys av < b> Fileinputstream
klassen for bedre lese filer. Disse metodene er listet nedenfor −
Sr.NoMethod & description1 tilgjengelig ()

Denne metoden returnerer et estimert antall byte som kan leses eller hoppet uten å blokkere for flere innspill
2 getChannel ()

Denne metoden returnerer en skrivebeskyttet FileChannel som deler sin posisjon med denne strømmen
3 getFD ()

Denne metoden returnerer den underliggende filen descriptor
4 lese (byte [] buffer, int byteOffset, int byteCount)

Denne metoden leser på de fleste lengde byte fra denne strømmen og lagrer dem i byte array b starter på offset

Eksempel

Her er et eksempel demonstrere bruk av intern lagringsplass til å lagre og lese filer. Det skaper en grunnleggende lagring program som lar deg lese og skrive fra intern lagringsplass.

For å eksperimentere med dette eksempelet, du kan kjøre dette på en faktisk enhet eller i en emulator.
StepsDescription1You vil bruke Android Studio IDE å lage en Android-applikasjon under en pakke com.example.sairamkrishna.myapplication. Mens du oppretter dette prosjektet, må du Target SDK og kompilere med på den nyeste versjonen av Android SDK til å bruke høyere nivåer av APIs.2Modify src /MainActivity.java fil for å legge nødvendig code.3Modify res /layout /activity_main å legge respektive XML components4Run programmet og velge en som kjører Android-enhet, og installere programmet på den og verifisere resultatene

Følgende er innholdet av den modifiserte hovedaktivitet filen src /MainActivity.java
.
pakken com.example.sairamkrishna.myapplication, import android.app.Activity, import android.os.Bundle, import android.view.Menu, import android.view.MenuItem, import android.view.View; import android. widget.Button, import android.widget.EditText, importere android.widget.TextView, importere android.widget.Toast, import java.io.FileInputStream, import java.io.FileOutputStream; public class MainActivity strekker Aktivitet {Button b1, b2; TextView tv; EditText ed1; Strengdata; private String file = "mydata"; Override Beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); b1 = (Button) findViewById (R.id.button); b2 = (Button) findViewById (R.id.button2); ed1 = (EditText) findViewById (R.id.editText); tv = (TextView) findViewById (R.id.textView2); b1.setOnClickListener (ny View.OnClickListener () {Override public void onClick (Vis v) {data = ed1.getText () toString ();. try {Fileoutputstream FOUT = openFileOutput (fil, MODE_WORLD_READABLE); fOut.write (data .getBytes ()); fOut.close (); Toast.makeText (getBaseContext (), "filen er lagret", Toast.LENGTH_SHORT) .vis ();} catch (Exception e) {//TODO Auto-generert catch-blokken e .printStackTrace ();}}}); b2.setOnClickListener (ny View.OnClickListener () {Override public void onClick (Vis v) {try {Fileinputstream fin = openFileInput (fil); int c; String temp = ""; while ((c = fin.read () !) = -1) {temp = temp + Character.toString ((char c));} tv.setText (temp); Toast.makeText (getBaseContext (), "file lese", Toast.LENGTH_SHORT) .vis ();} catch (Exception e) {}}}); }Override Public boolean onCreateOptionsMenu (Meny menyen) {//Blås menyen; dette legger til elementer i handlingsfeltet hvis det er til stede. . getMenuInflater () blåse (R.menu.menu_main, menyen); return true; }Override Public boolean onOptionsItemSelected (MENUITEM element) {//Håndtak handlingen bar varen klikk her. Handlingsfeltet vil //automatisk håndtere klikker på Hjem /Opp-knappen, så lenge //som du angir en forelder aktivitet i AndroidManifest.xml. int id = item.getItemId (); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) {return true; } Returnere super.onOptionsItemSelected (element); }}

Følgende er endret innholdet i xml res /layout /activity_main.xml
< RelativeLayout xmlns:. android = "http://schemas.android.com/apk/res /Android "xmlns: verktøy =" http://schemas.android.com/tools "android: layout_width =" match_parent "android: layout_height =" match_parent "android: paddingLeft =" @ dimen /activity_horizontal_margin "android: paddingRight =" @ dimen /activity_horizontal_margin "android: paddingTop =" @ dimen /activity_vertical_margin "android: paddingBottom =" @ dimen /activity_vertical_margin "verktøy: kontekst =" MainActivity ">. < TextView android: text = "Intern lagring" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /textview" android: Tekststørrelse = "35dp" android: layout_alignParentTop = "true" android: layout_centerHorizontal = "true" /> < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Tutorials point" android: id = "+ id /textView" android: layout_below = "+ id /textview" android: layout_centerHorizontal = "true" android: textcolor = "# ff7aff24" android: Tekststørrelse = "35dp" /> < Button android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Lagre" android: id = "+ id /knapp" android: layout_alignParentBottom = "true" android: layout_alignLeft = "+ id /textView "android: layout_alignStart =" + id /textView "/> < EditText android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /EditText" android: hint = "Enter Text" android: fokuserbar = "true" android: textColorHighlight = "# ff7eff15 "android: textColorHint =" # ffff25e6 "android: layout_below =" + id /bildeVis "android: layout_alignRight =" + id /textView "android: layout_alignEnd =" + id /textView "android: layout_marginTop =" 42dp "android : layout_alignLeft = "+ id /bildeVis" android: layout_alignStart = "+ id /bildeVis" /> < Imageview android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /bildeVis" android: src = "@ teikne /abc" android: layout_below = "+ id /textView" android : layout_centerHorizontal = "true" /> < Button android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "load" android: id = "+ id /knappen2" android: layout_alignTop = "+ id /knapp" android: layout_alignRight = "+ id /EditText" android: layout_alignEnd = "+ id /EditText" /> < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Les" android: id = "+ id /textView2" android: layout_below = "+ id /EditText" android: layout_toLeftOf = "+ id /knappen2" android: layout_toStartOf = "+ id /knappen2" android: textcolor = "# ff5bff1f" android: Tekststørrelse = "25dp" /> < /RelativeLayout >

Følgende er innholdet i res /verdier /string.xml
. < resources > < string name = "APP_NAME" > My Application < /string > < string name = "hello_world" > Hei, verden <! /string > < string name = "action_settings" > Innstillinger < /string > < /ressurser >

Følgende er innholdet av AndroidManifest.xml
fil
. <? xml version = "1.0 "encoding =" utf-8 "> < manifest xmlns:? android =" http://schemas.android.com/apk/res/android "pakken =" com.example.sairamkrishna.myapplication "> < søknad android: allowBackup = "true" android: icon = "@ Mipmap /ic_launcher" android: label = "@ streng /APP_NAME" android: tema = "@ stil /AppTheme" > < aktivitet android: ". MainActivity" name = android: label = "@ streng /APP_NAME" > < intent-filter > < handling android: name = "android.intent.action.MAIN" /> < kategori android: name = "android.intent.category.LAUNCHER" /> < /intent-filter > < /aktivitets > < /søknad > < /manifest >

La oss prøve å kjøre vår bagasje søknaden vi bare endret. Jeg antar at du hadde laget ditt AVD
mens du gjør oppsett miljø. For å kjøre programmet fra Android studio, åpne en av prosjektets aktivitets filer, og klikk Kjør ikonet fra verktøylinjen. Android studio installerer programmet på AVD og starter den, og om alt er bra med set-up og anvendelse, vil det vise følgende Emulator vindu −

Nå er det du trenger å gjøre er å skrive en tekst i feltet. For eksempel har jeg skrevet inn litt tekst. Trykk på Lagre-knappen. Følgende melding vil vises i deg AVD −

Nå når du trykker på load-knappen, vil programmet lese filen, og vise data. Ved vår, vil følgende data bli returnert −

Merk at du faktisk kan se denne filen ved å bytte til fane DDMS. I DDMS, velg fil explorer og navigere denne veien.
Verktøy> android> Android-enhet Monitor

Dette har også blitt vist på bildet nedenfor. Anmeldelser