Android gir utviklere direkte I / O til SD-kortet

Noe av det beste med Android-plattformen er at den har en tendens til å være mindre restriktiv enn andre smarttelefonoperativsystemer. Jada, Android har et brukervennlig preferansesystem som lar deg følge med på nøkkelverdipar, men hvis du trenger en mer fleksibel tilnærming, lar Android deg også lese og skrive direkte til et flyttbart SD-kort. Ta den iOS!

Eksemplet som følger viser både hvordan du får tilgang til SD-kortet på en Android-enhet, og utfører enkle lese- og skriveoperasjoner. Du kan følge med trinnvis veiledning, eller laste ned og importere hele prosjektet til Eclipse. Selv om koden kan se litt skremmende ut for nybegynnere, vil de som er kjent med Java merke at veldig lite av koden er Android-spesifikk. Med andre ord, å manipulere filer på Android er veldig mye som å manipulere filer på hvilken som helst plattform der Java kjører.

1. Start et nytt Android-prosjekt i Eclipse. Målrette Android 1.6 eller nyere. Husk å gi nytt navn til oppstartsfilen Main.java.

2. Legg til tillatelser til manifestet. Åpne /res/AndroidManifest.xml og legg til både lese- og skrivetillatelser til prosjektet.

AndroidManifest.xml

 "Http://schemas.android.com/apk/res/android" 
 package = "com.authorwjf.direct_file_io" 
 android: versionCode = "1" 
 android: versionName = "1.0" > 
 android: minSdkVersion = "4" 
 android: targetSdkVersion = "15" /> 
 "android.permission.WRITE_EXTERNAL_STORAGE" /> 
 "android.permission.READ_EXTERNAL_STORAGE" /> 
 android: icon = "@ drawable / ic_launcher" 
 android: label = "@ string / app_name" 
 android: theme = "@ style / AppTheme" > 
 android: name = ".Main" 
 android: label = "@ string / title_activity_main" > 
 "android.intent.action.MAIN" /> 
 "android.intent.category.LAUNCHER" /> 

3. Når du går videre til mappen / res / layout, vil du definere main.xml-layoutfilen. Oppsettet for dette prosjektet er en grei lineær layout som inneholder to rediger tekstfelt og tre knapper.

main.xml

 "Http://schemas.android.com/apk/res/android" 
 xmlns: tools = "http://schemas.android.com/tools" 
 android: layout_width = "fill_parent" 
 android: layout_height = "fill_parent" 
 android: orientering = "vertikal" 
 android: bakgrunn = "# 000000" > 
 android: layout_margin = "10dip" 
 android: layout_width = "fill_parent" 
 android: layout_height = "wrap_content" 
 android: singleLine = "true" 
 android: hint = "skriv inn litt tekst" 
 android: id = "@ + id / first_input_line" /> 
 android: layout_margin = "10dip" 
 android: layout_width = "fill_parent" 
 android: layout_height = "wrap_content" 
 android: singleLine = "true" 
 android: hint = "skriv inn litt mer tekst" 
 android: id = "@ + id / second_input_line" /> 
 android: layout_width = "fill_parent" 
 android: layout_height = "wrap_content" 
 android: gravitasjon = "sentrum" 
 android: orientering = "horisontal" > 
 android: layout_width = "wrap_content" 
 android: layout_height = "wrap_content" 
 android: id = "@ + id / clear_button" 
 android: text = "Clear" /> 
 android: layout_width = "wrap_content" 
 android: layout_height = "wrap_content" 
 android: id = "@ + id / load_button" 
 android: text = "Last" /> 
 android: layout_width = "wrap_content" 
 android: layout_height = "wrap_content" 
 android: id = "@ + id / save_button" 
 android: text = "Lagre" /> 

4. Nå er det på tide å skrive Main.java-koden. Begynn med noen inkluderer, overstyr on-start for å koble sammen de tre knappene, og en tilbakeringing for å håndtere knappetrykkene.

Main.java

 pakke com.authorwjf.direct_file_io; 
 import java.io.BufferedReader; 
 import java.io.BufferedWriter; 
 import java.io.File; 
 import java.io.FileReader; 
 import java.io.FileWriter; 
 importer java.io.IOEksepsjon; 
 import android.os.Bundle; 
 import android.os. Miljø; 
 import android.app.Aktivitet; 
 import android.view.View; 
 import android.view.View.OnClickListener; 
 import android.widget.EditText; 
 import android.widget.Toast; 
 public class Main utvider aktivitetsredskaper OnClickListener { 
 @Overstyring 
 public void onCreate (Bundle savedInstanceState) { 
 super .onCreate (savedInstanceState); 
 setContentView (R.layout. main ); 
 findViewById (R.id. clear_button ) .setOnClickListener ( dette ); 
 findViewById (R.id. save_button ) .setOnClickListener ( dette ); 
 findViewById (R.id. load_button ) .setOnClickListener ( dette ); 
 } 
 @Overstyring 
 public void onClick (Vis v) { 
 bytte (v.getId ()) { 
 sak R.id. clear_button : 
 ((EditText) findViewById (R.id. First_input_line )). SetText (""); 
 ((EditText) findViewById (R.id. Second_input_line )). SetText (""); 
 pause ; 
 sak R.id. load_button : 
 laste(); 
 pause ; 
 sak R.id. save_button : 
 lagre(); 
 pause ; 
 } 
 } 
 } 

5. Vi vil implementere tre private funksjoner for å håndtere filen I / O. Bortsett fra samtalene for å få en katalog for eksternt lagringssystem, er dette standard Java-teknikker for å opprette en fil hvis den ikke eksisterer (sikre), og deretter lese og skrive.

Main.java

 privat tomrom sikre () { 
 File sdcard = Miljø. getExternalStorageDirectory (); 
 Filfil = ny fil (sdcard, "/ my_file.txt"); 
 if (! file.exists ()) { 
 prøv { 
 file.createNewFile (); 
 } fangst (IOException e) { 
 Skål. makeText (getApplicationContext (), "Feil ved oppretting av fil!", Toast. LENGTH_LONG ) .show (); 
 } 
 } 
 } 
 privat tomrombelastning () { 
 sørge for(); 
 File sdcard = Miljø. getExternalStorageDirectory (); 
 Filfil = ny fil (sdcard, "/ my_file.txt"); 
 prøv { 
 BufferedReader br = new BufferedReader ( ny FileReader (fil)); 
 Streng linje; 
 if ((linje = br.readLine ())! = null ) { 
 String  content = line.toString (). Split (":"); 
 ((EditText) findViewById (R.id. First_input_line )). SetText (innhold 0); 
 ((EditText) findViewById (R.id. Second_input_line )). SetText (innhold 1); 
 } 
 br.close (); 
 } 
 fangst (IOException e) { 
 Skål. makeText (getApplicationContext (), "Feil ved lesing av fil!", Toast. LENGTH_LONG ) .show (); 
 } 
 } 
 privat tomrom lagre () { 
 sørge for(); 
 String firstLine = ((EditText) findViewById (R.id. First_input_line )). GetText (). ToString (). Trim (); 
 String secondLine = ((EditText) findViewById (R.id. Second_input_line )). GetText (). ToString (). Trim (); 
 File sdcard = Miljø. getExternalStorageDirectory (); 
 Filfil = ny fil (sdcard, "/ my_file.txt"); 
 prøv { 
 FileWriter fw = ny FileWriter (fil); 
 BufferedWriter bw = new BufferedWriter (fw); 
 bw.write (First + ":" + annenlinje); 
 bw.close (); 
 } fangst (IOException e) { 
 Skål. makeText (getApplicationContext (), "Feil ved skriving av fil!", Toast. LENGTH_LONG ) .show (); 
 } 
 } 
Vi er nesten klare til å kjøre prosjektet. Hvis du laster den direkte på enheten din, trenger du ikke gjøre noe annet. Hvis du planlegger å teste den på emulatoren, vil du gå inn og redigere AVD-profilen din slik at den inkluderer SD-lagring ( figur A ). Figur A

Når du har appen på telefonen eller emulatoren, skal resten være ganske selvforklarende. Du kan skrive inn noen av innspillene i et av de to redigeringsfeltene og deretter trykke Lagre. Ved å trykke Clear, (du gjettet det), ryddes feltene. Du kan bruke Last-knappen til å repopulere skjemaet med tidligere lagrede verdier. Selvfølgelig er det for mye å lagre to tekstlinjer direkte på SD-kortet, men filens I / O-konsepter vil lett skaleres for å møte et hvilket som helst antall virkelige scenarier. ( Figur B ) Figur B

© Copyright 2021 | pepebotifarra.com