Darbas su duomenimis
Java duomenų srautai
- Įvestis ir išvestis (io streams, buffers)
- Properties file usage
- Duomenų tipų konvertavimas
- Autoboxing and Unboxing
Java duomenų srautai
- Byte srautai - bitų duomenų skaitymui ir rašymui.
- Character srautai - naudojami tekstinių simbolių rašymui ir skaitymui, automatiškai apdorojant vertimą į ir iš VM aplinkoje nustatytų simbolių rinkinių.
- Buffered srautai - skirti optimizuoti sistemos žemo lygio kvietimų skaičių.
- Scanning ir Formatting srautai - padeda programai rašyti ir skaityti formatuotą tekstą.
- Command line I/O - darbui su komandine eilute.
- Data Streams - naudojami primityvių duomenų ir String’ų rašymui/skaitymui.
- Object Streams - naudojami įvairių objektų binariniam rašymui/skaitymui.
Darbas su srautais
- Klaidų apdorojimas - nepamiršti try-catch.
- Srautai turi būti atidaromi ir uždaromi tvarkingai.
- Paprastų srautų pavyzdžiai:
- Byte - FileInputStream, FileOutputStream
- Character - FileReader, FileWriter
- Simbolių eilučių - BufferedReader, PrintWriter.
- System.in,System.out,System.err, System.console()
- Duomenų srautai: DataInputStream ir DataOutputStream.
- Objektų srautai - ObjectInputStream and ObjectOutputStream
Trys standartiniai srautai, kuriuos visada galima panaudoti:
- System.in - InputStreamReader cin = new InputStreamReader(System.in);
- System.out - System.out.println("Some randome text.");
- System.err - System.err.println("No console.");
- Sukūrimas - Console c = System.console();
- Gali būti naudojamas slaptažodžių nuskaitymui.
Darbas su failais
java.nio.file.Path - nuo Java7. Java.io.File su ankstesnėmis versijomis.
Veiksmai su failais / aplankais.
Failų kūrimas, skaitymas ir rašymas.
java.nio.file.Path, java.io.File
- java.nio.file.Path - nuo Java7.java.io.File - ankstesniais atvejais.
- Pagrindinės išspręstos java.io.File problemos:
- Senesnės versijos gražinami klaidos pranešimai buvo neinformatyvūs.
- Problemos su metodais: nepatikimas rename veikimas, prastas veikimas esant dideliam
- apkrovimui.
- Nepatikimas failų sistemos simbolinių nuorodų (“Symbolic links”) veikimas.
- Nepakankamas rinkinys priemonių darbui su meta duomenimis.
Veiksmai su failais/aplankais
- Path - kelias iki failo duotoje failų sistemoje
- Pvz /home/katalogas/failas1.txt arba c:\users\katalogas\failas1.txt
- Patikrinti ar egzistuoja/pasiekiamas - Files.exists, Files.notExists
- Ištrinti - delete(Path), deleteIfExists(Path)
- Kopijuoti - Files. copy(Path, Path, CopyOption...)
- CopyOption - tai papildomų parametrų sąrašas atskirtas kableliais arba masyvas CopyOption[]. Galimos reikšmės: REPLACE_EXISTING, COPY_ATTRIBUTES, NOFOLLOW_LINKS.
- Perkelti - move(Path, Path, CopyOption...)
Failų kurimas:
- createFile(Path, FileAttribute<?>)
- createTempFile(Path, String, String, FileAttribute<?>)
- createTempFile(String, String, FileAttribute<?>)
Properties failo naudojimas
Properties failas naudojamas key-value reikšmėms saugoti.
Properties reikšmės naudojamos sistemos veikimo konfigūravimui, pvz - atsisiuntimų išsaugojimo vieta.
Raktas ir reikšmė visada String tipo.
Java aplinka visada palaiko sistemos aplinkos konfigūracijos failą. Daugiau apie sistemos konfigūracijos savybes čia
properties panaudojimas
Pagrindiniai Properties objekto metodai:
- contains(Object value), containsKey(Object key)
- getProperty(String key), getProperty(String key, String default)
- list(PrintStream s), list(PrintWriter w)
- elements(), keys(), and propertyNames(), stringPropertyNames()
- size()
- setProperty(String key, String value)
- remove(Object key)
Duomenų tipų konvertavimas
Galimi duomenų konvertavimai (conversion) Java kalboje: http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html
- Plėtimas (Widening primitive) - primityvaus duomenų tipo praplėtimas vyksta, kai mažesnio tikslumo tipas konvertuojamas į didesnio tikslumo tipą.
- Primityvųs tipai jų tikslumo didėjimo tvarka: byte, short, int, long, float ir double.
- Priešingas konvertavimas vadinamas siaurinimo (Narrowing primitive), tačiau jis naudojamas retai ir turi būti naudojamas atsargiai, kadangi yra galimybė prarasti informaciją.
- Objekto bendrinimas (Widening reference) - objektą visada galima laikyti jo tėvinės klasės objektu.
- Objekto siaurinimas/specializacija (Narrowing reference) - objektą galima laikyti tėvinės klasės subklasės objektu tik atlikus tinkamus veiksmus (jei įmanoma išvis).
Autoboxing ir Unboxing - primityvių tipų konvertavimas į atitinkamus objektus ir atgal,
pvz:
int -> Integer yra vadinamas autoboxing, Integer -> int - Unboxing. Kiti galimi variantai: boolean
- Unchecked conversions
- Capture conversions
- String conversions
- Value set conversions
Autoboxing ir Unboxing
Autoboxing - “kintamojo įdėjimas į objekto dėžutę”, pvz int į Integer. Unboxing - “objekto transformavimas į primityvų tipą”, pvz Byte į byte. Konvertavimas vykdomas: perduodant kintamuosius kaip parametrus, jei metodas tikisi atitinkamo Objekto arba primityvios reikšmės. Priskiriant primityvią reikšmę objektui arbaatvirkščiai.
Komentarų nėra:
Rašyti komentarą