Wykorzystanie plików

Podobne dokumenty
Mechanizm zapisu preferencji

Mechanizm powiadomień

[Android] Podstawy programowania

Tworzenie dialogów i wykorzystanie klasy Toast

akademia androida Składowanie danych część VI

Programowanie urządzeń mobilnych. dr inż. Juliusz Mikoda

Programowanie urządzeń mobilnych w systemie Android. Ćwiczenie 7 Wykorzystanie układu LinearLayout

Systemy operacyjne na platformach mobilnych

Podstawowe elementy GUI - zadania

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

Laboratorium Systemów Mobilnych. Wykład 2

Tłumaczenie i adaptacja materiałów: dr Tomasz Xięski. Na podstawie prezentacji udostępnionych przez Victor Matos, Cleveland State University.

Android pierwsza aplikacja

Laboratorium Systemów Mobilnych. Wykład 1

Powiadomienia w systemie Android

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Bezpieczne uruchamianie apletów wg

AndroidManifest.xml. Plik manifestu opisuje podstawowe charakterystyki aplikacji i definiuje jej komponenty.

Programowanie urządzeń mobilnych w systemie Android. Ćwiczenie 8 Wykorzystanie układu RelativeLayout

Podstawowe elementy GUI - zadania

Obsługa SMS i telefonii

Tworzenie i wykorzystanie usług

Wykorzystanie fragmentów i tabhost

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Wykład 10: Wejście i Wyjście

Systemy operacyjne na platformach mobilnych

Podstawy i języki programowania

Systemy operacyjne na platformach mobilnych

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Życie aktywności Nawigując przez aplikacje poszczególne Aktywności przechodzą pomiędzy stanami. Dla przykładu gdy aktywność uruchamia się po raz

1 Klasa File. 2 Writer. Programowanie w j zyku Java - Adam Krechowicz. Klasa File zapewnia podstawowe operacje na plikach

akademia androida Http i AsyncTask część VII

Wyświetlanie danych na listach

JAVA : TELEFONY KOMÓRKOWE I ANDROID 1. WSTĘP

Strumienie i serializacja

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Systemy operacyjne na platformach mobilnych

JAVA I SIECI. MATERIAŁY:

Wykład 4: Wejście/wyjście: strumienie Java

Wykorzystanie map i geolokalizacji

Java. Programowanie Obiektowe Mateusz Cicheński

Szybciej (pisać) Łatwiej (czytać) Prościej (utrzymywać) Marcin Wąsowski Amsterdam Standard Sp. z o.o.

Fragmenty są wspierane od Androida 1.6

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Mariusz Fraś. Instytut Informatyki. olitechnika Wrocławska. Systemy Wbudowane. Android. Dr inż. Mariusz Fraś. maf 1

Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Mobilne aplikacje multimedialne

Wyświetlanie danych na listach

Programowanie w języku Java

Zaawansowane aplikacje WWW - laboratorium

Programowanie Urządzeń Mobilnych. Laboratorium nr 9,10

Podstawy otwartych języków programowania Wyjątki i strumienie I/O

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK

Zaawansowane aplikacje internetowe laboratorium

Wykorzystanie menu i ActionBar

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Szybki tutorial o zabezpieczeniach w NFC

Systemy operacyjne na platformach mobilnych

Android. Zarz dzanie cyklem»ycia i stanem. Piotr Fulma«ski. March 10, 2015

Wsparcie dla różnych urządzeń. SDK pozwala przystosować aplikację do większości tych wypadków

akademia androida Intencje oraz URI część III

akademia androida Service, BroadcastReceiver, ContentProvider część IV

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

Tworzenie wydajnych interfejsów. Autorzy: Piotr Michałkiewicz, 2 rok AiR Daniel Maksymow, 2 rok Informatyki

SQLite w systemie Android. Własny dostawca treści. Materiał teoretyczny

Strumienie, pliki. Sortowanie. Wyjątki.

AKADEMIA MŁODYCH ODKRYWCÓW

WSTĘP DO ANDROIDA. Laboratorium

Android, wprowadzenie do SDK

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Wykorzystanie baz danych

akademia androida Pierwsze kroki w Androidzie część I

Programowanie obiektowe

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

Zaawansowane aplikacje internetowe laboratorium

Liczby pseudolosowe. Math. Różne sposoby generowania liczb pseudolosowych. Wybrane metody klasy Math

Aplikacje internetowe i rozproszone - laboratorium

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Komunikacja z użyciem gniazd aplikacje klient-serwer

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Layouty. Kilka layoutów

Java programowanie w sieci. java.net RMI

Programowanie obiektowe

Metody Metody, parametry, zwracanie wartości

Wykład dla studentów Informatyki Stosowanej UJ 2012/2013

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Aplikacje RMI Lab4

SOAP. Autor: Piotr Sobczak

Graficzny interfejs użytkownika

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Elementy JEE. 1. Wprowadzenie. 2. Prerekwizyty. 3. Pierwszy servlet. obsługa parametrów żądań 4. JavaServer Pages.

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

I. Usługi. Usługa może przyjąć dwie formy:

1. Co można powiedzieć o poniższym kodzie? public class A { void m(int a) { } int m(string s) { return Integer.parseInt(s); }

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Transkrypt:

Wykorzystanie plików

Tłumaczenie i adaptacja materiałów: dr Tomasz Xięski. Na podstawie prezentacji udostępnionych przez Victor Matos, Cleveland State University. Portions of this page are reproduced from work created and shared by Google and used according to terms

Zarządzanie plikami w systemie Android bazuje na podejściu dotyczącego operacji wejścia-wyjścia z Javy. Pliki mogą być przechowywane w pamięci wewnętrznej (na zazwyczaj mniejszej wewnętrznej partycji) lub zewnętrznej w postaci karty pamięci SD. Pliki znajdujące się w pamięci wewnętrznej współdzielą miejsce z innymi zasobami takimi jak ikony, obrazy, muzyka, pobrane pliki itp. Pliki w pamięci wewnętrznej nazywane są czasem plikami zasobów. Pliki zawarte wewnątrz paczki.apk mogą być przechowywane w folderze res/raw, gdy nie pasują do już isnitejącej struktury aplikacji (stwórz jeśli nie istnieje) 2

Eksplorator plików emulatora pozwala zajrzeć do wnętrza struktury plików i katalogów. Android i pliki Wewnętrzna pamięć Karta pamięci 3

Pamięć wewnętrzna. Zasoby aplikacji. Aplikacja na system Android może wykorzystywać szereg plików zasobów w res/drawable, res/raw, res/menu, res/style, itp. Do zasobów można dostać się poprzez metodę.getresources() jak np.: InputStream is = this.getresources().openrawresource(r.drawable.my_text_file); 6

Przykład 1: Odczyt plików zasobów //reading an embedded RAW data file public class File1Resources extends Activity { TextView txtmsg; @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); txtmsg = (TextView) findviewbyid(r.id.textview1); try { PlayWithRawFiles(); } catch (IOException e) { txtmsg.settext( "Problems: " + e.getmessage() ); } }// oncreate 7

Przykład 1: Odczyt plików zasobów public void PlayWithRawFiles() throws IOException { String str=""; StringBuffer buf = new StringBuffer(); int fileresourceid = R.raw.my_text_file; InputStream is = this.getresources().openrawresource(fileresourceid); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); if (is!=null) { while ((str = reader.readline())!= null) { buf.append(str + "\n" ); } } is.close(); txtmsg.settext( buf.tostring() ); }// PlayWithRawFiles } // File1Resources 8

Przykład 2: Pamięć wewnętrzna. Odczyt i zapis pliku. W tym przykładzie dane pobierane są od użytkownika i zapisywane do pliku tekstowego znajdującego się w pamięci wewnętrznej urządzenia. Po ponownym uruchomieniu aplikacji, uprzednio zapisane dane będą pobrane ponownie. 9

Przykład 2: Pamięć wewnętrzna. Odczyt i zapis pliku Pliki znajdujące się w katalogu data są prywatne dla danej aplikacji i inne aplikacje nie mają donich dostępu. 10

Przykład 2: Pobierz dane i zapisz w pliku. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffdddddd" android:padding="10dp" android:orientation="vertical" > <Button android:id="@+id/btnfinish" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:text=" Save File and Close " /> <EditText android:id="@+id/txtmsg" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" android:background="#ffffffff" android:gravity="top" android:hint="enter some lines of data here..." /> </LinearLayout> 111

Przykład 2: Pobierz dane i zapisz w pliku. public class File2WriteRead extends Activity { private final static String FILE_NAME = "notes.txt"; private EditText txtmsg; @Override public void oncreate(bundle icicle) { super.oncreate(icicle); setcontentview(r.layout.main); txtmsg = (EditText) findviewbyid(r.id.txtmsg); // deletefile(); //keep for debugging Button btnfinish = (Button) findviewbyid(r.id.btnfinish); btnfinish.setonclicklistener(new Button.OnClickListener() { public void onclick(view v) { finish(); } }); }// oncreate 1212

Przykład 2: Pobierz dane i zapisz w pliku. public void onstart() { super.onstart(); try { InputStream inputstream = openfileinput(file_name); if (inputstream!= null) { InputStreamReader inputstreamreader = new InputStreamReader(inputStream); BufferedReader reader = new BufferedReader(inputStreamReader); String str = "READING FROM EXISTING DISK\n"; StringBuffer stringbuffer = new StringBuffer(); while ((str = reader.readline())!= null) { stringbuffer.append(str + "\n"); } inputstream.close(); txtmsg.settext(stringbuffer.tostring()); } } catch (java.io.filenotfoundexception e) { } catch (Throwable t) { Toast.makeText(this, "Exception: " + t.tostring(), } }// onstart 1).show(); 1313

Przykład 2: Pobierz dane i zapisz w pliku. public void onpause() { super.onpause(); try { OutputStreamWriter out = new OutputStreamWriter( openfileoutput(file_name, 0)); out.write(txtmsg.gettext().tostring()); out.close(); } catch (Throwable t) { txtmsg.settext( t.getmessage() ); } }// onpause private void deletefile() { String path = "/data/data/cis470.matos.filewriteread/files/" + FILE_NAME; File f1 = new File(path); Toast.makeText(getApplicationContext(), "Exists " + f1.exists(), 1).show(); boolean success = f1.delete(); if (!success){ Toast.makeText(getApplicationContext(), "Deletion failed.", 1).show(); }else{ Toast.makeText(getApplicationContext(), "OK. File deleted.", 1).show(); } 1414

W tym przypadku dane przechowywane są w pliku notes.txt znajdującego się w pamięci wewnętrznej w katalogu: /data/data/cis470.matos.fileresources/files/notes.txt Zrzut ekranu pobranego pliku tekstowego 15

Przykład 3: Pamięć zewnętrzna Odczyt zapis plików na kartę pamięci. Karty pamięci zazwyczaj oferują większą pojemność niż pamięć wbudowana oraz przenośność (karta i dane mogą być wykorzystane w innym urządzeniu) 16

Przykład 3: Pamięć zewnętrzna Odczyt/zapis danych na kartę pamięci. Narzędzie File Explorer umożliwia podgląd/modyfikację plików. 17

Uwaga: Odczyt i zapis danych na kartę pamięci d. Podczas odczytu/zapisu danych na kartę pamięci wymagane są dodatkowe uprawnienia. Należy dodać następujące klauzule do pliku AndroidManifest.xml* *od Androida w wersji 6.0 zmienia się system uprawnień <uses-permission android:name="android.permission.read_external_storage"/> <uses-permission android:name="android.permission.write_external_storage"/> 18

Przykład 3: Odczyt/zapis danych do karty SD. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/widget28" android:padding="10dp" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/btnclearscreen" android:layout_width="160dp" <EditText android:layout_height="wrap_content" android:id="@+id/txtdata" android:text="2. Clear Screen" /> android:layout_width="match_parent" android:layout_height="180dp" android:layout_margin="10dp" android:background="#55dddddd" android:padding="10dp" android:layout_height="wrap_content" android:gravity="top" android:text="3. Read SD File" /> android:hint= "Enter some lines of data here..." android:textsize="18sp" /> <Button android:id="@+id/btnwritesdfile" android:layout_width="160dp" android:layout_height="wrap_content" android:text="1. Write SD File" /> <Button android:id="@+id/btnreadsdfile" android:layout_width="160dp" <Button android:id="@+id/btnfinish" android:layout_width="160dp" android:layout_height="wrap_content" android:text="4. Finish App" /> </LinearLayout> 1919

Przykład 3: Odczyt/zapis danych do karty SD. 20

Przykład 3: Odczyt/zapis danych do karty SD. public class File3SdCard extends Activity { // GUI controls EditText txtdata; Button Button Button Button btnwritesdfile; btnreadsdfile; btnclearscreen; btnfinish; @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); // bind GUI elements with local controls txtdata = (EditText) findviewbyid(r.id.txtdata); txtdata.sethint("enter some lines of data here..."); 21

222 Android i pliki Przykład 3: Odczyt/zapis danych do karty SD. btnwritesdfile = (Button) findviewbyid(r.id.btnwritesdfile); btnwritesdfile.setonclicklistener(new OnClickListener() { @Override public void onclick(view v) { // write on SD card file data from the text box try { File myfile = new File("mnt/sdcard/mysdfile.txt"); myfile.createnewfile(); FileOutputStream fout = new FileOutputStream(myFile); OutputStreamWriter myoutwriter = new OutputStreamWriter(fOut); myoutwriter.append(txtdata.gettext()); myoutwriter.close(); fout.close(); Toast.makeText(getApplicationContext(), "Done writing SD 'mysdfile.txt'", Toast.LENGTH_SHORT).show(); } catch (Exception e) { } Toast.makeText(getApplicationContext(), e.getmessage(), Toast.LENGTH_SHORT).show(); }// onclick }); // btnwritesdfile

2323 Android i pliki Przykład 3: Odczyt/zapis danych do karty SD. btnreadsdfile = (Button) findviewbyid(r.id.btnreadsdfile); btnreadsdfile.setonclicklistener(new OnClickListener() { @Override public void onclick(view v) { // write on SD card file data from the text box try { File myfile = new File("mnt/sdcard/mysdfile.txt"); FileInputStream fin = new FileInputStream(myFile); BufferedReader myreader = new BufferedReader(new InputStreamReader(fIn)); String adatarow = ""; String abuffer = ""; while ((adatarow = myreader.readline())!= null) { abuffer += adatarow + "\n"; } txtdata.settext(abuffer); myreader.close(); Toast.makeText(getBaseContext(), "Done reading SD 'mysdfile.txt'", 1).show(); } catch (Exception e) { Toast.makeText(getBaseContext(), e.getmessage(), 1).show(); } }// onclick }); // btnreadsdfile

Przykład 3: Odczyt/zapis danych do karty SD. btnclearscreen = (Button) findviewbyid(r.id.btnclearscreen); btnclearscreen.setonclicklistener(new OnClickListener() { @Override public void onclick(view v) { // clear text box txtdata.settext(""); } }); // btnclearscreen btnfinish = (Button) findviewbyid(r.id.btnfinish); btnfinish.setonclicklistener(new OnClickListener() { @Override public void onclick(view v) { finish(); } }); // btnfinish }// oncreate }// class 24

Przykład 4: Odczyt i zapis na karcie pamięci z wykorzystaniem klas Scanner i PrintWriter. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="10dp" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dp" android:id="@+id/txtmsg" android:textstyle="bold" android:background="#77eeeeee" /> </LinearLayout> 25

Przykład 4: Odczyt i zapis na karcie pamięci z wykorzystaniem klas Scanner i PrintWriter. public class File4Scanner extends Activity { TextView txtmsg; @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); txtmsg = (TextView) findviewbyid(r.id.txtmsg); testscannerfiles(); }//oncreate 26

Przykład 4: Odczyt i zapis na karcie pamięci z wykorzystaniem klas Scanner i PrintWriter. private void testscannerfiles(){ // Add to manifest the following permission request // <uses-permission android:name="android.permission.write_external_storage" /> try { String SDcardPath = Environment.getExternalStorageDirectory().getPath(); String mysdfilename = SDcardPath + "/" + "mysdfiletest.txt"; txtmsg.settext("writing to: " + mysdfilename); PrintWriter outfile= new PrintWriter( new FileWriter(mySDFileName) ); outfile.println("hola Android"); outfile.println("adios Android"); outfile.println(new Date().toString()); outfile.close(); 27

Przykład 4: Odczyt i zapis na karcie pamięci z wykorzystaniem klas Scanner i PrintWriter. // read SD-file,show records. // <uses-permission android:name="android.permission.read_external_storage" /> Scanner infile= new Scanner(new FileReader(mySDFileName)); String instring= "\n\nreading from: " + mysdfilename + "\n"; while(infile.hasnextline()) { instring += infile.nextline() + "\n"; } txtmsg.append(instring); infile.close(); } catch (FileNotFoundException txtmsg.settext( "Error: " + } catch (IOException e) { txtmsg.settext( "Error: " + } e) { e.getmessage()) ; e.getmessage()) ; }//testscannerfiles }//clas s 28

Pytania? Ikony wykorzystano z: http://www.iconseeker.com 29