B IT MAN77/1 v: 2018.02.05B IT MAN
10. Ea: Extrák
Java Programozás
B IT MAN77/2
B IT MAN77/3
XML – Extensible Markup Language
Kiterjeszthető jelölő nyelv
A W3C által ajánlott általános célú leíró nyelv
Célja elsősorban adatok, információk, és ezek struktúráinak
leírása
A HTML-hez hasonlóan egyszerű felépítésű,
azonban annál általánosabb funkciójú, rugalmasabb, mégis
szintaktikai szempontból szigorúbb is, ami leegyszerűsíti az
ipari méretű fejlesztést és hibakezelést.
Az XML kidolgozásakor elsődleges volt az egyszerűség, a
széleskörű alkalmazhatóság beleértve az Interneten
való felhasználhatóságot is.
B IT MAN77/4
XML – Extensible Markup Language
Felépítése:
– Az XML 1.0 definiálja a tag és az attribútum fogalmát.
– Az XML-ben az adatok tagok között jelennek meg
• A tagokat < > jelek határolják
• A záró tag / jellel kezdődik
• A tagok adják meg a közrezárt adat jelentését,
értelmezését
– Pl:
<konyv><szerzo>Brian W. Aldiss</szerzo><cim>Amíg világ a világ</cim>
</konyv>
B IT MAN77/5
XML – Extensible Markup Language
Felépítése:
– Az XML-ben az attribútum az értelmezőnek szóló
paraméter, melyet név = "érték" formában kell megadni.
– Az attribútumok lehetnek a dokumentumhoz kapcsolódó
általános értékek, és lehetnek adatok is.
– Pl:
<?xml version="1.0" encoding="ISO-8859-2" standalone="no"?>
<konyv mufaj="sci-fi"><szerzo>Brian W. Aldiss</szerzo><cim>Amíg világ a világ</cim>
</konyv>
B IT MAN77/6
XML – Extensible Markup Language
Használata:
– A táblázatokat, címjegyzékeket és egyéb strukturált adatot
előállító programok az adatokat időről-időre lemezre kell, hogy
mentsék, valamilyen bináris vagy szöveges formátumban.
– A szöveges formátum előnye, hogy - amennyiben szükséges -
akár ember által is elolvasható anélkül, hogy az azt előállító
programot le kéne futtatni; a megtekintéséhez elegendő egy
tetszőleges szövegszerkesztő használata.
– A szöveges formátum egy másik előnye, hogy a fejlesztők sokkal
könnyebben tudják megtalálni benne az esetleges hibákat.
– A HTML-hez hasonlóan az XML fájlok sem azért készültek, hogy
az embereknek el kelljen olvasni azokat, de ha szükséges,
mégis megtehetik.
B IT MAN77/7
DOM – Document Object Model
A DOM egy platform- és nyelvfüggetlen felület, amely
alapvető módja az XML fájlok elérésének, manipulálásának.
A DOM egymással gyerek-szülő kapcsolatban álló
objektumok rendszere.
A dokumentum tartalmát, illetve a dokumentum valamennyi
összetevőjét magában foglalja.
XML
Property Konyv
Method Encoding Indent Mufaj Szerzo Cim
B IT MAN77/8
XML készítés Java nyelven
Elnevezések:
1.
2.
3.
XML declaration: az értelmezőnek szóló információk helye. Az egyes
tulajdonságokat a setOutputProperty() metódussal lehet beállítani.
Root element: a legfelső szintű adattag. Ennek a tagnak csak neve van.
Java neve: Element. Az Element konténer típusú objektum, van neve, és
lehet bele értéket is rakni. A createElement() metódussal jön létre.
Child element: adattag. Neve és értéke van. Szintén Element. Ha
létrehoztuk a createElement() metódussal, a createTextNode() paranccsal
rakhatunk bele értéket.
1.
2.
3.
Az Element-ek, mivel konténerek, egymásba rakhatók, így többszintű xml
tartalom alakítható ki.
B IT MAN77/9
XML készítés Java nyelven
import javax.xml.parsers.*;import javax.xml.transform.*;import javax.xml.transform.dom.*;import javax.xml.transform.stream.*;import org.xml.sax.*;import org.w3c.dom.*;import java.io.*;
public class XMLWriter {public static void main (String args[]) {
Minden importált csomag a Java SE része, nem kell külső csomagokat letölteni!
B IT MAN77/10
XML készítés Java nyelven
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();Document dom;try {DocumentBuilder db = dbf.newDocumentBuilder();dom = db.newDocument();Element rootEle = dom.createElement("konyv");Element e = null;
e=dom.createElement("szerzo");e.appendChild(dom.createTextNode("Brian W. Aldiss"));rootEle.appendChild(e);e=dom.createElement("cim");e.appendChild(dom.createTextNode("Amíg világ a világ"));rootEle.appendChild(e);dom.appendChild(rootEle);
B IT MAN77/11
XML készítés Java nyelven
try {Transformer tr =
TransformerFactory.newInstance().newTransformer();tr.setOutputProperty(OutputKeys.INDENT, "yes");tr.setOutputProperty(OutputKeys.METHOD, "xml");tr.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-2");tr.setOutputProperty("{http://xml.apache.org/xslt}
indent-amount", "4");tr.transform(new DOMSource(dom), new StreamResult(new
FileOutputStream("konyv.xml")));System.out.println("Adatok kiírva!");
} catch (TransformerException te) {System.out.println("XmlWriter: "+te.getMessage());}
catch (IOException ioe) {System.out.println("XmlWriter: "+ioe.getMessage());}
} catch (ParserConfigurationException pce) {System.out.println("XmlWriter: "+pce.getMessage());}
} //end main} // end program
B IT MAN77/12
XML készítés Java nyelven
DOMAdatok DocumentBuilder Transformer XML file
B IT MAN77/13
XML olvasás Java nyelven
XML file DOMDocumentBuilder AdatokKiolvasás
1. Megnyitjuk a fájlt, és beolvassuk a tartalmát.
2. A beolvasott adatokból felépítjük a DOM-ot.
3. A DOM-ból kiolvassuk a node-okat (csomópontokat, adatokat).
4. A node-okból kiolvassuk az adatokat, és feldolgozzuk azokat.
B IT MAN77/14
XML olvasás Java nyelven
import org.xml.sax.*;import org.w3c.dom.*;import java.io.*;
public class XMLReader {public static void main (String args[]) {String szerzo, cim;
Document dom;DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
B IT MAN77/15
XML olvasás Java nyelventry {
DocumentBuilder db = dbf.newDocumentBuilder();dom = db.parse("konyv.xml");
NodeList nodeList = dom.getElementsByTagName("konyv");
Node node = nodeList.item(0);Element element = (Element) node;szerzo = element.getElementsByTagName("szerzo")
.item(0).getTextContent();cim = element.getElementsByTagName("cim")
.item(0).getTextContent();System.out.println(szerzo+": "+cim);System.out.println("Adatok beolvasva!");
} catch (ParserConfigurationException pce) {System.out.println("XmlReader: "+pce.getMessage());}
catch (SAXException se) {System.out.println("XmlReader: "+se.getMessage());}
catch (IOException ioe) {System.out.println("XmlReader: "+ioe.getMessage());}
}}
1. 2.
3.
4.
B IT MAN77/16
XML olvasás Java nyelven
Az xml fájlok általában nemcsak egy adatsort tartalmaznak, hanem
sokat
Célszerű úgy felépíteni a tartalmukat, hogy az ismétlődő adatsort
berakjuk egy külső konténerbe (konyvek), így egy ciklus
segítségével könnyebb olvasni az adatokat.
B IT MAN77/17
XML olvasás Java nyelven
NodeList nodeList = dom.getElementsByTagName("Emp");for(int i = 0; i < nodeList.getLength(); i++) {Node node = nodeList.item(i);Element element = (Element) node;szerzo = element.getElements...cím = element.getElements...System.out.println(szerzo+": "+cim);
}
B IT MAN77/18 B IT MAN
B IT MAN77/19
DAT – Bináris fájlba írás
Típusos fájl, melynek alapja az a típus, amit letárolunk
Az osztálynak implementálnia kell a Serializable interfészt, mely
képes az osztály adatait bájtfolyammá alakítani
import java.io.Serializable;public class Konyv implements Serializable {private String szerzo;private String cim;
public Konyv(String s, String c){szerzo = s;cim = c;
}public String getSzerzo(){return szerzo;
}public String getCim(){return cim;
}}
B IT MAN77/20
DAT – Bináris fájlba írás
import java.io.*;public class DatWriter {public static void main (String args[]) {Konyv[] k = new Konyv[2];k[0] = new Konyv("Katerina Diamond", "A titok");k[1] = new Konyv("Caleb Carr", "A halál angyala");
try {FileOutputStream fos = new FileOutputStream("konyv.dat");ObjectOutputStream oos = new ObjectOutputStream(fos);oos.writeInt(k.length);for (int i = 0; i < k.length; i++)
oos.writeObject(k[i]);fos.close();System.out.println("Adatok kiírva!");
} catch (IOException ioe) {System.out.println(ioe.getMessage());}}
}
B IT MAN77/21
DAT – Olvasás bináris fájlból
import java.io.*;public class DatReader {public static void main (String args[]) {int db=0; Konyv adat;try {
FileInputStream fistr = new FileInputStream("konyv.dat");ObjectInputStream ois = new ObjectInputStream(fistr);db = ois.readInt();Object o = null;for (int i = 0; i < db; i++) {
o = ois.readObject();System.out.pradat = (Konyv)o;intln(adat.getSzerzo()+": "+adat.getCim());
}fistr.close();System.out.println("Adatok beolvasva!");} catch (ClassNotFoundException cnfe)
{System.out.println(cnfe.getMessage());}catch (IOException ioe) {System.out.println(ioe.getMessage());}
}}
B IT MAN77/22
B IT MAN77/23
CSV – Strukturált szöveges fájl
Az egyes adatokat a fájlban valamilyen határoló karakter választja
el, általában vessző, pontosvessző vagy tabulátor
Gyakran alkalmazzák ezt a formátumot az adatbázis-kezelők és a
táblázatkezelők
A fájl egy sora egy rekordot, vagy egy munkafüzet-sort jelent
Ha munkafüzet adatok kerülnek bele, akkor a vessző általában
tizedes vesszőt jelent, ilyenkor határolóként alkalmazzunk
pontosvesszőt
A fájlok legelső sora általában tartalmazza az értelmezést segítő
mezőneveket
Szerző;CímKaterina Diamond;A titokCaleb Carr;A halál angyala
B IT MAN77/24
CSV – Fájlba írás
import java.io.*;public class CsvWriter {public static void main (String args[]) {Konyv[] k = new Konyv[2];k[0] = new Konyv("Katerina Diamond", "A titok");k[1] = new Konyv("Caleb Carr", "A halál angyala");try {PrintStream out =
new PrintStream(new FileOutputStream("konyv.csv"));out.println("Szerző;Cím");for (int i=0; i < k.length; i++)
out.println(k[i].getSzerzo()+";"+k[i].getCim()); out.close();System.out.println("Adatok kiírva!");
} catch (IOException ioe) {System.out.println(ioe.getMessage());}
}}
B IT MAN77/25
import java.io.*;public class CsvReader {public static void main (String args[]) {try {
FileInputStream f=new FileInputStream("konyv.csv");LineNumberReader in =
new LineNumberReader(new InputStreamReader(f));String separator=";";String s=in.readLine(); //== fejléc: oszlopok neveis=in.readLine();while(s!=null) {int index=s.indexOf(separator);String szerzo = s.substring(0, index);String cim=s.substring(index+1, s.length());System.out.println(szerzo+": "+cim);s=in.readLine();
}in.close();System.out.println("Adatok beolvasva!");
} catch (IOException ioe){System.out.println(ioe.getMessage());}}
}
CSV – Olvasás fájlból
B IT MAN77/26 B IT MAN
B IT MAN77/27
JSON – JavaScript Object Notation
Kis méretű, szöveg alapú szabvány, ember által olvasható
adatcserére.
A JavaScript szkriptnyelvből alakult ki, egyszerű
adatstruktúrák és asszociatív tömbök reprezentálására (a
JSON-ban objektum a nevük).
A JSON-t legtöbbször egy szerver és egy kliens számítógép
közti adatátvitelre használják az XML egyik alternatívájaként.
Általánosságban strukturált adatok tárolására, továbbítására
szolgál.
B IT MAN77/28
JSON – JavaScript Object Notation
Felépítése:
– Az adatok kulcs : érték párosokként szerepelnek
– Az értékpárosokat vesszők , választják el egymástól
– A listák kapcsos zárójelek { } közé kerülnek
– A tömbök határoló karaktere a szögletes zárójel [ ]
– Használható adattípusok:
• szám – idézőjelek nélkül: 25.652
• karakterlánc – idézőjelek között: "szöveg"
• logikai típus – true vagy false érték
• null – üres érték leírására
B IT MAN77/29
JSON – JavaScript Object Notation
Felépítése:
{"konyvek": {"konyv": [{
"szerzo": "Brian W. Aldiss","cim": "Amíg világ a világ"
},{
"szerzo": "Robert I. Sutton","cim": "Kis seggfejkalauz"
}]
}}
B IT MAN77/30
JSON – XML
{"konyvek": {"konyv": [
{"szerzo": "Brian W. Aldiss","cim": "Amíg világ a világ"
},{"szerzo": "Robert I. Sutton","cim": "Kis seggfejkalauz"
}]
}}
<konyvek><konyv>
<szerzo>Brian W. Aldiss</szerzo><cim>Amíg világ a világ</cim>
</konyv><konyv>
<szerzo>Robert I. Sutton</szerzo><cim>Kis seggfejkalauz</cim>
</konyv></konyvek
B IT MAN77/31
JSON készítés Java nyelven
A json API a Java 7 EE része, de nincs benne az SE
kiadásban.
Ezért töltsük le az org.json csomagot, és telepítsük
Letöltés:
Telepítés:
– Csomagoljuk ki a fájlt a Java munkakönyvárba
– A meglévő ini.bat fájlunkban fűzzük hozzá a csomag nevét
a keresési útvonalhoz:
http://www.java2s.com/Code/Jar/o/Downloadorgjsonjar.htm
B IT MAN77/32
JSON készítés Java nyelven
Ha elkészítjük az org.json csomaggal a json adatsort, az
adatok ugyan helyesek lesznek, de nem kellemesen
olvasható formátumban kapjuk meg azokat:
Az emberi szem számára könnyen olvasható formátum
előállítására egy újabb külső csomag használható, a google-
gson. Letöltése:
https://repo1.maven.org/maven2/com/google/code/gson/gson/2.8.2/
B IT MAN77/33
JSON készítés Java nyelven
Előkészítése:
– Csomagoljuk ki a fájlt a Java munkakönyvárba
– A meglévő ini.bat fájlunkban fűzzük hozzá a csomag nevét
a keresési útvonalhoz:
B IT MAN77/34
JSON – Fájlba írás
import java.io.*;import org.json.*;import com.google.gson.*;import java.util.StringTokenizer;
public class JsonWriter {public static void main(String[] args) {
Konyv[] k = new Konyv[2];k[0] = new Konyv("Brian W. Aldiss", "Amíg világ a világ");k[1] = new Konyv("Robert I. Sutton", "Kis seggfejkalauz");
1. rész: előkészületek. A k tömb tartalmát fogjuk fájlba írni.
B IT MAN77/35
JSON – Fájlba írás
JSONObject jRootObj = new JSONObject();JSONObject obj = new JSONObject();JSONArray jArray = new JSONArray();
try {for (int i = 0; i < k.length; i++) {
JSONObject jo = new JSONObject();jo.put("szerzo", k[i].getSzerzo());jo.put("cim", k[i].getCim());jArray.put(i, jo);
}
obj.put("konyv", jArray);jRootObj.put("konyvek", obj);
System.out.println("Adatok feldolgozva!");} catch (Exception e) {System.out.println(e.getMessage());}
2. rész: a json adatok előállítása.
JSONObject: tetszőleges json név-érték párost tartalmazó konténer
JSONArray: sorszámozott, azonos jellegű név-érték párost tartalmazó konténer
put(): adatpáros, vagy objektum berakása egy konténerbe
B IT MAN77/36
JSON – Fájlba írás
try {Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();JsonElement je = jp.parse(jRootObj.toString());String prettyJS = gson.toJson(je);
PrintStream out = new PrintStream(new FileOutputStream("konyv.json"));
String[] arrSplit = prettyJS.split("\n");for(String x : arrSplit) out.println(x);out.close();System.out.println("Adatok kiírva!");
} catch (Exception e) {System.out.println(e.getMessage());}}
}
3. rész: formázás, kiírás. A kiíráskor elveszik a gson formátum, ezért a
sortöréseknél részekre bontjuk a stringet, és a részeket egyesével, a println()
metódussal írjuk ki.
B IT MAN77/37
JSON – a kiírt fájl tartalma
B IT MAN77/38
JSON – Olvasás fájlból
import java.io.*;import org.json.*;
public class JsonReader {public static void main(String[] args) {StringBuilder jsonData = new StringBuilder();try {FileInputStream f=new FileInputStream("konyv.json");LineNumberReader in =
new LineNumberReader(new InputStreamReader(f));String inputLine;while ((inputLine = in.readLine()) != null)
jsonData.append(inputLine);in.close();
} catch (IOException e) {System.out.println(e.getMessage());}System.out.println("Adatok beolvasva!");
1. rész: adatok beolvasása fájlból, és összefűzésük egyetlen stringbe.
B IT MAN77/39
JSON – Olvasás fájlból
try {JSONObject jRootObj = new JSONObject(jsonData.toString());JSONObject jObj = jRootObj.getJSONObject("konyvek");JSONArray jArr = jObj.getJSONArray("konyv");for (int i = 0; i < jArr.length(); ++i) {
JSONObject rec = jArr.getJSONObject(i);String szerzo = rec.getString("szerzo");String cim = rec.getString("cim");System.out.println("Adat: "+szerzo+": "+cim);
}System.out.println("Adatok feldolgozva!");
} catch (Exception e) {System.out.println(e.getMessage());}}
}
2. rész: a string konvertálása json konténerré, az adatok kinyerése a
konténer(ek)ből getXxx() metódusokkal.
B IT MAN77/40 B IT MAN
B IT MAN77/41
Fájl beolvasása a webről
A java.net.URL egy olyan osztály, amely egy weben
elérhető erőforrásra mutat.
Az erőforrás lehet egy fájl, egy mappa, egy adatbázis vagy
egy keresőmotor objektum…
Létrehozása:
– new URL(String);
– A String egy teljes, szöveges erőforrás azonosító
– Pl: "http://www.example.com/docs/resource1.html"
B IT MAN77/42
Fájl beolvasása a webről
A java.net.URLConnection osztály az alkalmazás és az
URL közötti kapcsolatot reprezentálja.
A kapcsolatot az openConnection() metódussal lehet
megnyitni.
A kapcsolat egy olyan csatorna, mely használható az
erőforrás olvasására és írására is.
URL url = new URL("http://www...");URLConnection conn = url.openConnection();BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
B IT MAN77/43
Fájl beolvasása a webrőlimport java.io.*;import java.net.*;public class NetReader {public static void main(String[] args) {String url = "http://users.iit.uni-miskolc.hu/~szucs/data.txt";StringBuilder response = null;try {
URL website = new URL(url);URLConnection conn = website.openConnection();BufferedReader in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));response = new StringBuilder();String inputLine;while ((inputLine = in.readLine()) != null)
response.append(inputLine+"\n");in.close();System.out.println(response.toString());System.out.println("Data is readed!");} catch (IOException e) {System.out.println(e.getMessage());}
}}
B IT MAN77/44
B IT MAN77/45
PDF fájl készítése
Pdf készítésre alkalmas csomag nincs a Javaban, ezért
töltsük le a com.itextpdf csomagot:
Letöltés:
Telepítés:
– Csomagoljuk ki a fájlt a Java munkakönyvárba
– A meglévő ini.bat fájlunkban fűzzük hozzá a csomag nevét
a keresési útvonalhoz (ügyelve a verziószámra!):
http://www.java2s.com/Code/Jar/i/Downloaditextpdf541jar.htm
B IT MAN77/46
PDF fájl készítése a com.itextpdf csomaggal
1. Létre kell hozni egy Documentum példányt, ez lesz maga a
pdf dokumentum:
2. Létre kell hozni egy PdfWriter-t, ez fogja a dokumentumot
fájlba írni:
3. Meg kell nyitni a dokumentumot:
4. Létre kell hozni egy Paragraph-ot, bekezdést, megadható a
tartalma és a betűtípusa:
5. Hozzá kell adni a bekezdést a dokumentumhoz:
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(fname));
document.open();
Paragraph par = new Paragraph ("Lista a könyvekről", fnt);
document.add(par);
B IT MAN77/47
PDF fájl készítése a com.itextpdf csomaggal
6. A kész dokumentum a close() metódus meghívásával kerül
lezárásra, és ekkor a teljes tartalma átmásolódik a PdfWriter-
re, azaz kiíródik a fájlba:
Fontkészlet BaseFont beállítása: segítségével lehet
kialakítani a betűtípust, a megfelelő karakterkészletet, és a
fontkészletet beágyazni a dokumentumba:
– Betűtípusok: HELVETICA, COURIER, TIMES_ROMAN
Betűtípus Font beállítása: a fontkészletből készül, megadható
a méret, és a stílus:
document.close();
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,BaseFont.CP1250, BaseFont.EMBEDDED);
Font fnt = new Font(bf, 14);Font fnt = new Font(bf, 12, Font.BOLD);//Font.ITALIC, Font.UNDERLINE
B IT MAN77/48
PDF fájl készítése a com.itextpdf csomaggal
Ha kész a dokumentum, érdemes egy üzenet (és egy gombnyo-
más) erejéig megállítani a programot, hogy a dokumentum
háttértárra írására legyen elég idő, ezután megnyithatjuk a
dokumentumot az alapértelmezett kezelőprogrammal:
public static void Message(String mes){Console console = System.console();System.out.println(mes);System.out.print("Press any key!");String answer = console.readLine();
}
try {File fpdf = new File(fname);Desktop.getDesktop().open(fpdf);
} catch (IOException exx ) {System.out.println(exx.getMessage());
}
B IT MAN77/49
PDF fájl készítése a com.itextpdf csomaggal
import com.itextpdf.text.*;import com.itextpdf.text.pdf.*;import com.itextpdf.text.Font.*;import java.io.*;import java.awt.Desktop;
public class PdfM1 {public static void main(String[] args) {String fname = "konyv.pdf";
try {BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,
BaseFont.CP1250, BaseFont.EMBEDDED);Font fnt = new Font(bf, 16, Font.BOLD);Document document = new Document();PdfWriter.getInstance(document, new
FileOutputStream(fname));document.open();
B IT MAN77/50
PDF fájl készítése a com.itextpdf csomaggal
Paragraph par = new Paragraph ("Lista a könyvekről", fnt);document.add(par);
document.close();Message("The document has been completed,
name is: "+fname);} catch (DocumentException de) {
System.out.println("PdfMaker: "+de.getMessage());} catch (IOException ex) {
System.out.println("PdfMaker: "+ex.getMessage());}
try {File fpdf = new File(fname);Desktop.getDesktop().open(fpdf);
} catch (IOException exx ) {System.out.println(exx.getMessage());
}} //== end of main
B IT MAN77/51
PDF fájl készítése a com.itextpdf csomaggal
public static void Message(String mes){Console console = System.console();System.out.println(mes);System.out.print("Press any key!");String answer = console.readLine();
}}
B IT MAN77/52
PDF fájl készítése a com.itextpdf csomaggal
Táblázat kialakítása:
1. Létre kell hozni egy PdfPTable példányt, ez lesz maga a pdf
táblázat. Paramétere lehet az oszlopok száma, vagy az
oszlopok szélessége (egymáshoz viszonyított számokkal
megadva):
2. Adjuk meg a táblázat szélességét (az oldalszélesség
százalékában):
3. Hozzunk létre egy PdfPCell-t, és adjuk meg a cella tartalmát:
PdfPTable table = new PdfPTable(3); //oszlopok száma
float[] widths = {4, 5};PdfPTable table = new PdfPTable(widths); //oszlopok szélessége
table.setWidthPercentage(60);
PdfPCell c = new PdfPCell(new Paragraph("szöveg", font));
B IT MAN77/53
PDF fájl készítése a com.itextpdf csomaggal
Táblázat kialakítása:
4. Adjuk hozzá a cellát a táblázathoz:
5. Ismételjük a cella létrehozását, és táblázathoz adását a teljes
táblázat tartalomra. A cellák balról jobbra, majd fentről lefelé
haladva adódnak a táblázathoz, az oszlopok számának
megfelelően.
6. Állítsuk be a táblázat vízszintes elhelyezkedését:
7. Adjuk hozzá a kész táblázatot a dokumentumhot:
table.addCell(c);
table.setHorizontalAlignment(Element.ALIGN_LEFT);
document.add(table);
1 2 3
4 5 6
7 8 9
B IT MAN77/54
PDF fájl készítése a com.itextpdf csomaggal
float[] widths = {4, 5};PdfPTable table = new PdfPTable(widths);table.setWidthPercentage(52);
Font f1 = new Font(bf, 14, Font.BOLD);Font f2 = new Font(bf, 14);PdfPCell c = new PdfPCell(new Paragraph("Szerző", f1));table.addCell(c);c = new PdfPCell(new Paragraph("Cím", f1));table.addCell(c);
c = new PdfPCell(new Paragraph("Katerina Diamond", f2));table.addCell(c);c = new PdfPCell(new Paragraph("A titok", f2));table.addCell(c);c = new PdfPCell(new Paragraph("Caleb Carr", f2));table.addCell(c);c = new PdfPCell(new Paragraph("A halál angyala", f2));table.addCell(c);
table.setHorizontalAlignment(Element.ALIGN_LEFT);document.add(table);
B IT MAN77/55 B IT MAN
B IT MAN77/56
ZIP fájl készítése
A java.util.zip csomag tartalmazza a zip és gzip
állományok kezelésére szolgáló osztályokat.
ZipOutputStream: szűrő osztály, mely a bemenetére érkező
adatokat zip formátumúra alakítja.
ZipInputStream: szűrő osztály, mely a bemenetére érkező zip
formátumú adatokat normál adattá alakítja.
ZipEntry: egy zip formátumú fájlt jelképez.
A ZipOutputStream-hez a putNextEntry() metódussal adható
hozzá egy zip formátumú fájl
A ZipInputStream-ből a getNextEntry() metódussal kérhető el
egy zip formátumú fájl
B IT MAN77/57
import java.io.*;import java.util.zip.*;public class ZipMaker {public static void main (String args[]) {byte[] buffer = new byte[1024];try{
FileOutputStream fos = new FileOutputStream("ZipFile.zip");
ZipOutputStream zos = new ZipOutputStream(fos);ZipEntry ze= new ZipEntry("zipalap.txt");zos.putNextEntry(ze);FileInputStream in = new FileInputStream("zipalap.txt");
int len;while ((len = in.read(buffer)) > 0) {
zos.write(buffer, 0, len);}in.close();zos.closeEntry();zos.close();System.out.println("Done");
}catch(IOException ex) {ex.printStackTrace();}}
}
ZIP fájl – becsomagolás
B IT MAN77/58
import java.io.*;import java.util.zip.*;public class ZipReader {public static void main (String args[]) {byte[] buffer = new byte[1024];try{ZipInputStream zis = new ZipInputStream(
new FileInputStream("ZipFile.zip"));ZipEntry ze = zis.getNextEntry();while(ze!=null){
String fileName = ze.getName();File newFile = new File(fileName);FileOutputStream fos = new FileOutputStream(newFile);int len;while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);}fos.close();ze = zis.getNextEntry();
}zis.closeEntry();zis.close();System.out.println("Done");
}catch(IOException ex) {ex.printStackTrace();}}
}
ZIP fájl – kicsomagolás
B IT MAN77/59 B IT MAN
B IT MAN77/60
JAR fájl készítése
A JAR fájl olyan ZIP fájlformátumú fájl, amely java osztályokat
és hozzájuk tartozó metaadatokat tartalmaz.
JAR fájlokat készíteni a JDK részét képező jar eszközzel
lehet.
A JAR fájl tartalmazhat egy úgynevezett manifest fájlt a
META-INF könyvtárban MANIFEST.MF néven. Ez a fájl írja le
a futtató környezet számára, hogy hogyan kell a jar fájlt
használni.
B IT MAN77/61
JAR fájl készítése
Készítsünk egy emp.mft nevű szöveges fájlt, az alábbi
tartalommal:
– Manifest-Version: a csomagolt fájl verziószáma
– Main-Class: a fájl futtatásakor melyik osztály main metódusát
kell elindítani
– Class-path: a program futásakor használatos elérési útvonal a
csomagolt fájlon belül
• Itt kell megadni az esetleges fájlként a JAR fájlba
becsomagolt külső csomagokat
– További bejegyzések lehetségesek, de ezek elegendőek egy
futtatható JAR előállításához
B IT MAN77/62
JAR fájl készítése
Az emp.mft fájl tartalma másolódik be a JAR fájlba a META-
INF könyvtárba, MANIFEST.MF néven.
A JAR fájlban szeretnénk elhelyezni a következő fájlokat:
– az összes olyan class fájlt, mely Emp-pel kezdődik: Emp*.class
– FileManager.class
– CH.class
– az adatbázis drivert: sqlite-jdbc-3.21.0.jar
– a pdf drivert: itext-5-4-0-.jar
A tartalomnak megfelelő kiadandó parancs:
jar cvfm0 Emp.jar emp.mft Emp*.class FileManager.class CH.classsqlite-jdbc-3.21.0.jar itextpdf-5.4.0.jar
B IT MAN77/63
JAR fájl készítése
A jar parancs paraméterei:
– c – készítsen új archívumot
– v – a végzett műveletek részletes kiírása a konzolra
– f – archívum nevének megadása
– m – a megadott manifest tartalom hozzáadása az archívumhoz
– 0 – csak tárolás, ne tömörítse az archívumot
A paraméterek után jönnek szigorú sorrendben az adatok:
1. archívum neve
2. manifest fájl neve
3. az archívumba kerülő adatok (ezeknél a sorrend tetszőleges)
jar cvfm0 Emp.jar emp.mft Emp*.class FileManager.class CH.classsqlite-jdbc-3.21.0.jar itextpdf-5.4.0.jar
B IT MAN77/64
JAR fájl készítése
B IT MAN77/65
B IT MAN77/66
Teszt 1.
Alakítson ki két kategóriát, és sorolja a két kategóriába az
alábbi fájl kiterjesztéseket!
.dat .csv .pdf .xml .json .zip .jar .java .class
1. ____________ ____________________
2. ____________ ____________________
Kategóri neve: Tartalma:
B IT MAN77/67
Teszt 2.
Mi a DOM?
Document Object Model
Development Object Markup
Detected Object Matrix
Development Of Methods
Document Oriented Model
B IT MAN77/68
Teszt 3.
Mi az XML?
eXtensible Markup Language
Example Markup Language
X-Markup Language
eXtra Modern Link
B IT MAN77/69
Teszt 4.
Hogyan kell megadni az xml fájlban a verziószámot?
<?xml version="1.0" />
<?xml version="1.0"?>
<xml version="1.0" />
<?xml version=1.0>
B IT MAN77/70
Teszt 5.
Hogyan készítjük el az xml fájl gyökérelemét?
RootElement root = dom.createElement("adatok");
Element root = dom.createRoot("adatok");
Element root = dom.createElement("adatok");
RootElement root = dom.createRootElement("adatok");
B IT MAN77/71
Teszt 6.
Melyik metódussal írunk ki fájlba egy saját kialakítású osztályt?
fos.write(o);
fos.writeln(o);
fos.writeObject(o);
fos.println(o);
B IT MAN77/72
Teszt 7.
Melyik az a fájltípus, amelyben az adatok kulcs : érték párosok
alakjában szerepelnek?
.xml
.dat
.csv
.json
Bármilyen fájlban szerepelhetnek így az adatok
B IT MAN77/73
Teszt 8.
Az org.json csomagot használva, a Java kódban hogyan
nevezik az adatot tartalmazó objektumot?
JSONObject
Element
Node
jsonData
jsonEntry
B IT MAN77/74
Teszt 9.
Igaz vagy hamis az állítás?
Az állítás igaz
Az állítás hamis
Az állítás részben igaz, a csomag része a Java 7 EE-
nek része, de nincs benne az SE kiadásban.
Nincs zip fájl készítésére alkalmas csomag a Javaban.
B IT MAN77/75
Teszt 10.
Mi a manifest.mf fájl szerepe?
XML fájl készítésekor ide kerülnek a DOM információk
Ez tartalmazza a ZIP csomagban lévő fájlok listáját
JAR fájlban ide kerülnek a használat információi
JSON fájloknál a helyes (olvasható) előállításhoz szükséges
PDF fájlokban itt adhatók meg a környezeti információk
B IT MAN77/76 B IT MAN
B IT MAN77/77
VÉGEVÉGE