2017 m. spalio 22 d., sekmadienis

Darbas su duomenimis

Darbas su duomenimis


  • Į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

  1. Klaidų apdorojimas - nepamiršti try-catch.
  2. Srautai turi būti atidaromi ir uždaromi tvarkingai.
  3. Paprastų srautų pavyzdžiai:
    1. Byte - FileInputStream, FileOutputStream
    2. Character - FileReader, FileWriter
    3. Simbolių eilučių - BufferedReader, PrintWriter.
    4. System.in,System.out,System.err, System.console()
    5. Duomenų srautai: DataInputStream ir DataOutputStream.
  4. 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.");
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ą

Etiketės