Java Programozás 9. Ea: Java fájlkezelés. Sztrímtan

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Java Programozás 9. Ea: Java fájlkezelés. Sztrímtan"

Átírás

1 Java Programozás 9. Ea: Java fájlkezelés Sztrímtan 148/1 B ITv: MAN

2 Java fájlkezelés A Java nyelvben a fájlkezelés Stream-eken keresztül valósul meg Stream: adatok sorozata, egyik végén befelé a másik végén kifelé "folynak" az adatok A java.io csomag tartalmazza a szükséges osztályokat Stream jellemzői: szekvenciális írás, olvasás különböző input források és output nyelők egységesen kezelhetők egy csatorna bemenete lehet egy másik csatorna kimenete is azaz szűrő csatorna 148/2

3 Stream Csatornák csoportosítása: 148/3 Irány szerint: bemeneti csatorna kimeneti csatorna Adattípus szerint: byte szervezésű csatorna (bájtfolyam) karakter szervezésű csatorna (karakterfolyam) Feladatuk alapján: forrást illetve nyelőt meghatározó csatorna (pl. file, tömb, stb.) szűrő csatorna: A csatorna adatait módosítják A csatorna funkcionalitását bővíti ki

4 Alap stream osztályok Típus - Irány Bemeneti Kimeneti Bájt InputStream OutputStream Karakter Reader Writer Az ezekből származó osztályok ugyanígy végződnek. A két típus a csatorna által kezelt legkisebb adategység típusában különbözik: Bájt csatorna: 8 bit Karakter csatorna: 16 bit, (Unicode) A két osztálycsalád kezelő metódusainak elnevezése, használata megegyezik! 148/4

5 Byte streams Character streams Object ByteArrayInputStream FileInputStream BufferedReader A java.io csomag (részlete) InputStream FilterInputStream ObjectInputStream CharArrayReader FilterReader File PipedInputStream InputStreamReader FileReader SequenceInputStream PipedReader Reader StringReader RandomAccessFile ByteArrayOutputStream FileOutputStream BufferedWriter CharArrayWriter OutputStream FilterOutputStream FilterWriter ObjectOutputStream OutputStreamWriter FileWriter PipedOutputStream PipedWriter Writer PrintWriter 148/5 Class Abstract Class StringWriter

6 Stream Az OutputStream és az InputStream abstract osztályok, melyek meghatározzák a legalacsonyabb szintű műveleteket az összes bájt szervezésű csatorna számára: strukturálatlan adatok írása, olvasása A Java ezeket az osztályokat implementálja a magasabb szintű tevékenységekhez, pl: fájlok írása, olvasása Mivel az összes bájtfolyam örököli az InputStream vagy a OutputStream struktúráját, a különféle bájtfolyamok felcserélhető módon használhatók. 148/6 Kép forrása: chimera.labs.oreilly.com

7 Stream A streamek rétegezhetők (beágyazhatók az adatfolyamba), azért, hogy olyan funkciókat adjanak az adatfolyamhoz, mint például a pufferelés, a szűrés vagy a magasabb szintű adattípusok kezelése. A Reader és a Writer nagyon hasonlít az InputStream és a OutputStream szolgáltatásokra, kivéve, hogy bájt helyett karakterekkel foglalkoznak. Ezek az osztályok helyesen kezelik a Unicode karaktereket, amelyek kezelése nem történik mindig megfelelően a bájtfolyamok esetében. Az InputStreamReader és a OutputStreamWriter olyan speciális osztályok, amelyek egy definiálható karakterkódolást használnak a karakterek és a bájtok kölcsönös átalakítására. 148/7

8 Stream Szűrőfolyam InputStream in = System.in; InputStreamReader charsin = new InputStreamReader( in ); BufferedReader bufferedcharsin = new BufferedReader( charsin ); String line = bufferedcharsin.readline(); double d = NumberFormat.getInstance().parse(line).doubleValue(); InputStream is = new BufferedInputStream(System.in); double d = is.read(); A BufferedInputStream egy olyan típusú szűrőfolyam, amely előbb olvas és pufferel egy bizonyos mennyiségű adatot, aztán kiolvasáskor a kért magasabb szintű adattípusra alakítja, és így adja ki magából 148/8

9 Stream Szűrőfolyam Kép forrása: chimera.labs.oreilly.com 148/9

10 Stream A csatornaosztályok absztrakt ősei: InputStream byte alapú bemeneti csatorna 148/10 OutputStream byte alapú kimeneti csatorna Reader karakter alapú bemeneti csatorna Writer karakter alapú kimeneti csatorna Egy stream életciklusa: Megnyitás A megfelelő stream osztály példányosításával. (Általában a konstruktornak átadott paraméterek segítségével jelöljük ki az elérni szánt médiát) Írás/olvasás A stream megfelelő metódusai segítségével Bezárás A stream objektum close() metódusával

11 Stream megnyitása, lezárása A Java I/O osztályoknak nincsen külön megnyitó metódusa, a konstruktor hozza létre, és rögtön meg is nyitja a csatornát. A csatorna lezárására a close() metódus szolgál. Kimeneti csatornák esetén a close() végrehajtja a flush() metódust is, azaz lemezre menti a pufferek tartalmát. Ha lezárt csatornára próbálunk meghívni valamilyen író/olvasó műveletet, akkor IOException kivételt kapunk. 148/11

12 Stream kiíró műveletek Byte szervezésű stream (OutputStream) write(int a) throws IOException write(byte b[]) throws IOException write(byte b[], int b, int L) throws IOException b: beginindex, L: length Karakter szervezésű stream (Writer) write(int c) throws IOException write(char c[]) throws IOException write(char c[], int b, int L) throws IOException write(string s) 148/12

13 Stream olvasó műveletek Byte szervezésű stream (InputStream) int read() throws IOException int read(byte c[ ]) throws IOException int read(byte c[ ], int s, int L) throws IOException b: beginindex, L: length Karakter szervezésű stream (Reader) int read() throws IOException int read(char c[ ]) throws IOException int read(char c[], int s, int L) throws IOException A visszatérő érték az adat sorszáma, mérete, vagy kódja, fájl végénél: /13

14 Példakód fájl másolása import java.io.*; public class Copier { public static void main( String[] args ) throws IOException { FileInputStream fis = new FileInputStream("Copier.java"); Copy(fis, System.out); fis.close(); } } public static void Copy(InputStream in, OutputStream out) throws IOException { int b; while( (b=in.read())!= -1 ) out.write(b); out.flush(); } 148/14

15 Példakód fájl másolása FileInputStream: Nevéből következik: fájltartalmat beolvasó bájt csatorna A konstruktorában megadott nevű fájlt nyitja meg olvasásra Copy metódus: int egységenként beolvassa a bemenetet, és kiírja a kimenetre Bemenete a megnyitott fájl Kimenete az alapértelmezett kimenet (monitor) A hibakezelés (nem elegáns módon) tovább lett adva a VM-nek Következzenek további példakódok: 148/15

16 Stream A csatornák végének kezelése: A beolvasó műveletek megkülönböztetik az üres és a véget ért csatornákat. Üres egy csatorna, ha pillanatnyilag nem tartalmaz adatot. Ilyenkor a beolvasó műveletek addig várakoznak, amíg nem érkezik adat. Véget ért egy csatorna, ha a csatorna végét jelző jel érkezik meg rajta (fájl vége, UNIX-ban Ctrl-D, DOS-ban Ctrl-Z billentyű) 148/16

17 Stream Egyéb műveletek public long skip(long n) throws IOException 148/17 n darab adategységet átlép beolvasás nélkül visszaadja a ténylegesen átugrott adategységek számát public boolean ready() throws IOException karakter csatornáknál megadja, hogy van-e beolvasható adat. ha igaz, akkor az egy karaktert beolvasó read() nem blokkolódik public int available() throws IOException bájt csatornák esetén megadja, hogy minimálisan hány bájt áll rendelkezésre a csatornán.

18 Stream Bemeneti- kimeneti csatornák (források, nyelők): 148/18 File: FileInputStream (OutputStream) FileReader (Writer) Tömb: ByteArrayInputStream (OutputStream) CharArrayReader (Writer) String: StringReader (Writer) Cső: PipedInputStream (OutputStream) PipedReader (Writer) Egy hálózati végpont Egy másik csatorna kimenete

19 Fájl csatornák Ha egy csatornához hozzá akarunk rendelni egy fájlrendszerbeli fájlt, akkor a FileInputStream, FileOutputStream, illetve FileReader vagy FileWriter osztályok egyikét kell használnunk. A konstruktornak át kell adnunk egy hivatkozást a fájlra Stringként, vagy egy File objektumként. Ügyeljünk az elérési út formátumára (rendszerfüggő)! InputStream FileInputStream java.io Byte streams Object OutputStream FileOutputStream Reader InputStreamReader FileReader Character streams 148/19 Writer OutputStreamWriter FileWriter

20 Fájl csatornák A FileInputStream konstruktorai: public FileInputStream(String s) public FileInputStream(File f) public FileInputStream(FileDescriptor fd) FileDescriptor: gépspecifikus egyedi forrás azonosító számsor A FileOutputStream konstruktorai: public FileOutputStream(String s, boolean a) public File Output Stream(File f, boolean a) public File Output Stream(FileDescriptor fd, boolean a) boolean a: ha az érték igaz, hozzáfűzésre nyitja meg a fájlt (Append) 148/20

21 Fájl csatornák Biztonsági ellenőrzés: Minden file művelet során meghívódik a SecurityManager osztály megfelelő jogosultság ellenőrző metódusa (pl. checkread()), amely SecurityException-t dob, ha nincs meg a jog. Az egyes check metódusok meghívásával közvetlenül ellenőrizhetők a jogok. A SecurityException kivétel nem kötelezően lekezelendő. 148/21

22 Példakód FileOutputStream/FileInputStream 1. import java.io.fileinputstream; import java.io.fileoutputstream; import java.io.ioexception; Egyszerű adattípus írása (olvasása) bináris fájlba public class io_bin { public static void main(string[] args) { try { FileOutputStream fstr = new FileOutputStream("binary.dat"); for (int i = 65; i <= 90; i++) { fstr.write(i); } fstr.close(); } catch (IOException ioe) { System.err.println(ioe.getMessage()); } 148/22

23 Példakód FileOutputStream/FileInputStream } } try { FileInputStream fis = new FileInputStream("binary.dat"); int b; while ((b = fis.read())!= -1) { System.out.print(b + " "); } System.out.println(); fis.close(); } catch (IOException ioe) { System.err.println(ioe.getMessage()); } Egyszerű adattípus írása (olvasása) bináris fájlba. 148/23

24 Bájt- és karaktertömbök, Stringek Egy csatornát hozzákapcsolhatunk tömbökhöz, vagy Stringekhez. Ehhez a következő osztályokat használhatjuk: ByteArrayInputStream, ByteArrayOutputStream CharArrayReader, CharArrayWriter StringReader, StringWriter InputStream Byte streams ByteArrayInputStream java.io Object OutputStream Reader ByteArrayOutputStream CharArrayReader Character streams StringReader CharArrayWriter 148/24 Writer StringWriter

25 Példakód StringWriter/StringReader import java.io.*; class StWR { public static void main(string args[]) throws IOException{ StringWriter out = new StringWriter(); for (int i=49; i<100; i++) out.write(i); out.close(); } } 148/25 String s =""; StringReader in = new StringReader(out.toString()); int data = in.read(); while (data!= -1) { s += (char)data; data = in.read(); } in.close(); System.out.println(s);

26 Bájtcsatorna feletti karaktercsatornák Az InputStreamReader és az OutputStreamWriter osztályok összekapcsolják a bájt és karakter csatornákat. Ezek olyan karaktercsatornák, amelyek bájtcsatornák felett vannak definiálva, 16 bites Unicode karaktereket írunk és olvasunk, de azok 8 bites bájtok formájában utaznak a csatornán. A konstruktornak megadhatjuk, hogy milyen szabvány szerint konvertáljon. Reader InputStreamReader Object Character streams Writer OutputStreamWriter 148/26

27 Példakód OutputStreamWriter/InputStreamReader import java.io.*; class ChSet { } public static void main (String args[]) throws IOException { Writer w = new OutputStreamWriter(System.out,"8859_2"); w.write(72); w.write(369); w.write(116); w.write(139); w.write(103); w.write(130); w.write(112); w.flush(); } 148/27

28 Bemeneti csatornák összefűzése A SequenceInputStream osztállyal összefűzhetünk több bemeneti csatornát. import java.io.*; public class FileSeq { public static void main( String[] args ) throws IOException { InputStream in = new SequenceInputStream( (new FileInputStream("b.txt")), (new FileInputStream("c.txt")) ); Copy(in, System.out); in.close(); } } 148/28 public static void Copy(InputStream in, OutputStream out) throws IOException { int b; while((b=in.read())!= -1) out.write(b); out.flush(); } Object InputStream FileInputStream SequenceInputStream

29 Hasznos szűrőosztályok DataInputStream, DataOutputStream: különböző adattípusok kiírásával egészíti az eredeti csatornát PrintStream, PrintWriter: különböző adattípusok szöveges kiírásával egészíti az eredeti csatornát Csatornák bufferelése BufferedInputStream, BufferedOutputStream BufferedReader, BufferedWriter 148/29

30 Hasznos szűrőosztályok InputStream FilterInputStream DataInputStream BufferedInputStream Byte streams DataOutputStream Object OutputStream FilterOutputStream PrintStream Reader Character streams Writer BufferedReader PrintWriter BufferedWriter BufferedOutputStream java.io 148/30

31 Példakód DataOutputStream/DataInputStream import java.io.*; public class DSPrg { public static void main(string[] args) throws IOException { FileOutputStream fos = new FileOutputStream("floatex.dat"); DataOutputStream dos = new DataOutputStream(fos); dos.writefloat(34.865f); dos.close(); } } DataInputStream dis = new DataInputStream( new FileInputStream("floatex.dat")); float f = dis.readfloat(); System.out.println(f); dis.close(); 148/31

32 Példakód PrintWriter/BufferedReader import java.io.*; public class PWPrg { static String filename = "pw.txt"; public static void main( String[] args ) throws IOException { FileWriter fw = new FileWriter(fileName); PrintWriter pw = new PrintWriter(fw); pw.printf("product list\n"); pw.printf("product name is %s and its price is %d $", "iphone", 1500); pw.close(); } } BufferedReader reader = new BufferedReader(new FileReader(fileName)); System.out.println("Data from file:"); String s = reader.readline(); while(s!= null) { System.out.println(s); s = reader.readline(); } 148/32

33 148/33

34 Példakód BufferedWriter/BufferedReader public static void BuWrite (String filename, String data){ BufferedWriter writer = null; try { writer = new BufferedWriter(new FileWriter(fileName)); writer.write(data); System.out.println("Data is written!"); } catch (IOException ioe) { System.err.println (ioe); } } finally { try { writer.close(); } catch (IOException ioe) { System.err.println (ioe); } } String írása (olvasása) szöveges fájlba. 148/34

35 Példakód BufferedWriter/BufferedReader public static void BuWrAppend (String filename, String data){ BufferedWriter writer = null; try { writer=new BufferedWriter(new FileWriter(fileName, true)); writer.newline(); writer.write(data); System.out.println("Data is appended!"); } catch (IOException ioe) { } System.err.println (ioe); } finally { try { writer.close(); } catch (IOException ioe) { System.err.println (ioe); } } String írása (olvasása) szöveges fájlba. 148/35

36 Példakód BufferedWriter/BufferedReader public static void BuRead (String filename){ 1. BufferedReader reader = null; String s = ""; try { 2. reader = new BufferedReader(new FileReader(fileName)); System.out.println("Data from file:"); 3. s = reader.readline(); while(s!= null) { System.out.println(s); 4. s = reader.readline(); String írása (olvasása) } szöveges fájlba. } catch (IOException ioe) { System.err.println (ioe); } finally { try { 5. reader.close(); } catch (IOException ioe) { System.err.println (ioe); } } 148/36 }

37 Példakód BufferedWriter/BufferedReader import java.io.*; public class Fkezel { public static void main(string args[]) { String fnev = "TextFile.txt"; BuWrite(fnev, "Hello Programmer!"); BuWrAppend(fnev, "Good Work!"); BuRead(fnev); } } String írása (olvasása) szöveges fájlba. 148/37

38 148/38

39 Példakód FileOutputStream/FileInputStream import java.io.serializable; import java.util.date; import java.text.*; class Student implements Serializable{ private String Name; private int Height; private Date Birthday; } 148/39 public Student (String n, int h, Date b) { Name = n; Height = h; Birthday = b; } Felhasználói osztály kialakítása fájlkezelés céljából. public String tostring() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); String s= sdf.format(birthday); return "Name: "+Name+" Height: "+Height+" B.day: "+s; }

40 Példakód FileOutputStream/FileInputStream public static void Kiir(int x) { try { FileOutputStream fos = new FileOutputStream("Students.dat"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeint(x); } x=sta.lentgh; Felhasználói osztály írása (olvasása) bináris fájlba. for (int i = 0; i < x; i++) { oos.writeobject(sta[i]); } fos.close(); System.out.println("Data is written to file!"); } catch (IOException ioe) { System.out.println("File write exception: "+ioe); } Student sta[]; 148/40

41 Példakód FileOutputStream/FileInputStream /41 public static void Beolvas() { try { Felhasználói osztály írása FileInputStream fis = (olvasása) bináris fájlba. new FileInputStream("Students.dat"); ObjectInputStream ois = new ObjectInputStream(fis); db = ois.readint(); Object o = null; System.out.println("Data from file:"); for (int i = 0; i < db; i++) { o = ois.readobject(); st = (Student)o; System.out.println(st); } fis.close(); } catch (Exception e) { System.out.println("File write exception: "+e); } } }

42 Példakód FileOutputStream/FileInputStream import java.io.*; import java.util.date; import java.text.*; public class StudentPrg { private static Student st; private static int db = 3; private static Student[] sta = new Student[10]; static SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); static Date d0=null, d1=null, d2=null; public static void main(string[] args) { try { d0 = sdf.parse(" "); d1 = sdf.parse(" "); d2 = sdf.parse(" "); } catch (ParseException pe) {System.out.println("Hiba: "+pe);} sta[0] = new Student("Béla", 188, d0); sta[1] = new Student("Enikő", 166, d1); sta[2] = new Student("Ödön", 179, d2); Kiir(db); 6. Beolvas(); 148/42 }... Felhasználói osztály írása (olvasása) bináris fájlba.

43 Fájlrendszer kezelés 148/43

44 Fájlrendszer kezelés A java.io csomagban vannak nem stream típusú fájlok kezelését szolgáló osztályok is, pl: A File osztály egy fájlt reprezentál a helyi fájlrendszerben, segítségével fájl és könyvtárműveleteket végezhetünk A RandomAccessFile osztály segítségével közvetlenül, direkt módon (nem csak sorosan) hozzáférhetünk egy fájl tartalmához A FilenameFilter osztály segítségével szűrhetjük a megjelenített fájlnevek listáját 148/44

45 File osztály A File osztály egy fájlt (bejegyzést) reprezentál a helyi fájlrendszerben. A fájl lehet könyvtár is, ami egy olyan fájl, amiben bejegyzések és egyéb információk lehetnek! A bejegyzést a rendszer az elérési útvonalával (path) azonosítja Konstruktorok File(String pathname); File(String parent, String child); File(File parent, String child); 148/45

46 File osztály Útvonalak értelmezése Absolute path Current directory Relative path Parent path Child path Name c:\users\bitman\documents\java8\abc.txt Abszolút útvonal: mindig a root elemtől indul, és tartalmazza a könyvtárak listáját, a végén a fájl nevével. Relatív útvonal: mindig kombinálni kell egy másik útvonallal, a fájl eléréséhez. 148/46

47 File osztály A bejegyzés útvonal tulajdonságai : boolean isabsolute() abszolút a fájl útvonala? String getabsolutepath() abszolút útvonal lekérése File getabsolutefile() fájl lekérése abszolút útvonallal String getpath() relatív útvonal lekérése String getparent() szülő útvonal lekérése File getparentfile() szülő fájl lekérése String getname() fájl neve 148/47

48 File osztály A bejegyzés tulajdonságai: boolean isdirectory() könyvtár? boolean isfile() fájl? long length() a fájl mérete long lastmodified() utolsó módosítás időpontja boolean ishidden() rejtett? boolean canread() olvasható? boolean canwrite() írható? boolean exists() fizikailag létező bejegyzés? boolean setreadonly() csak olvasható beállítása boolean setwritable(boolean) írható beállítása boolean setreadable(boolean) olvasható beállítása 148/48

49 File osztály A bejegyzések kezelése: boolean mkdir() könyvtár létrehozása boolean mkdirs() könyvtár létrehozása a nem létező szülőkönyvtárakkal együtt boolean createnewfile() throws IOException üres fájl létrehozása (csak akkor jön létre, ha nem létezik) boolean delete() bejegyzés törlése void deleteonexit() a VM leállásakor törli a fájlt boolean renameto(file dest) bejegyzés átnevezése File[] listfiles() bejegyzésben lévő fájlok listája 148/49

50 Példakód import java.io.*; public class FK1 { public static void main(string args[]) { String CurDirName = System.getProperty("user.dir"); System.out.println("User Directory: "+CurDirName); File CurDir = new File(CurDirName); File CurFile = new File(CurDirName, "a.txt"); System.out.println("Is absolute: "+CurFile.isAbsolute()); System.out.println("Path: "+CurFile.getPath()); System.out.println("Parent: "+CurFile.getParent()); System.out.println("Name: "+CurFile.getName()); System.out.println(""); File[] files = CurDir.listFiles(); System.out.println("Files in "+CurDir); for (File f : files) System.out.println(f); 148/50

51 Példakód System.out.println(""); System.out.println(".txt files in "+CurDir); File[] batfiles = CurDir.listFiles(new FileFilter(){ public boolean accept( File path ){ return path.isfile() && path.getname().endswith(".txt"); } }); for (File f : batfiles) System.out.println(f.getAbsolutePath(). substring(f.getabsolutepath().lastindexof("\\")+1)); System.out.println(""); File af = new File("a.txt"); System.out.println(af+ (af.canwrite()? " is writable" : " is not writable")); System.out.println(af+" file size is: "+af.length()+" bytes"); 148/51

52 Példakód String fs = File.separator; boolean ok = (new File(CurDir+fs+"Prb_dir")).exists(); System.out.println("Prb_dir exists: "+ok); if (!ok) { ok = (new File(CurDir+fs+"Prb_dir")).mkdir(); if (ok) System.out.println("Prb_dir created now!"); } 4. File tf = new File("Prb_dir"+fs+"c.txt"); try { FileInputStream fis = new FileInputStream(af); FileOutputStream fos = new FileOutputStream(tf); int b; while( (b=fis.read())!= -1 ) fos.write(b); fos.flush(); fis.close(); fos.close(); } catch (Exception e) {System.err.println(e);} 148/52

53 Példakód if (tf.exists()) tf.setwritable(false); System.out.println(tf+ (tf.canwrite()? " is writable" : " is not writable")); BufferedWriter writer = null; try { writer=new BufferedWriter(new FileWriter(tf, true)); writer.newline(); writer.write("cccccccccc"); System.out.println("Data is appended!"); } catch (Exception e) {System.err.println("Exception: "+ e.getmessage());} try { if (writer!= null) writer.close(); } catch (Exception e) {System.err.println("Exception: "+ e.getmessage());} if (tf.exists()) tf.setwritable(true); System.out.println(tf+ (tf.canwrite()? " is writable" : " is not writable")); 148/53

54 Példakód File nf = new File("Prb_dir"+fs+"nc.dat"); tf.renameto(nf); System.out.println(tf+" New name is: "+nf); File od = new File("Prb_dir"); File nd = new File("New_dir"); od.renameto(nd); System.out.println(od+" New name is: "+nd); File f = new File("New_dir"+fs+"nc.dat"); ok = f.delete(); if (ok) System.out.println(f+" is deleted!"); File d = new File("New_dir"); ok = d.delete(); if (ok) System.out.println(d+" is deleted!"); } } 148/54

55 java.nio 148/55

56 java.nio csomag Új alternatíva a fájlok kezelésére A Java 7-es verziójában jelent meg Mindent tud, amit az io tudott Újdonságai: Linkek kezelése Metainformációk, jogosultságok kezelési lehetőségeinek bővítése Több, egyszerűbb fájl kezelő parancs 148/56

57 newoutputstream() newinputstream() provider() getfilesystem() java.nio csomag Fontosabb osztályok FileSystems A java.nio csomag (részlete) Files getdefault() FileSystem getfilestores() Iterable<FileStore> getfilestore() FileStore getlast ModifiedTime() getfilesystem() get() FileTime getpath() Path Paths FileSystemProvider newdirectorystream() newinputstream() newoutputstream() newbufferedreader() InputStream OutputStream DirectoryStream BufferedReader 148/57 Class Abstract Class Final Class Interface

58 Fontosabb osztályok Path: File, directory, link név fogalom Paths: Path létrehozás Files: File, directory, link műveletek FileSystems: File rendszer objektum létrehozás FileSystem: File rendszer információk FileSystemProvider: File rendszer adatok betöltése FileStore: Eszközt (kötetet, partíciót) jelképez 148/58

59 Fájlrendszer kezelése Aktuális file rendszer kinyerése: FileSystem fs = FileSystems.getDefault(); Filerendszerben levő partíciók: Iterable<FileStore> part = fs.getfilestores(); Filerendszerben levő gyökér directory-k: Iterable<Path> = fs.getrootdirectories(); 148/59

60 Fájlrendszer műveletek Partíció (FileStore) információk: long gettotalspace() long getusablespace() long getunallocatedspace() String name() String type() String tostring() 148/60

61 Példakód import java.nio.file.filestore; import java.nio.file.filesystem; import java.nio.file.filesystems; import java.nio.file.path; import java.io.ioexception; public class FS { public static void main(string[] args) { FileSystem fs = FileSystems.getDefault(); } 148/61 System.out.println("Read-only file system: "+fs.isreadonly()); System.out.println("File name separator: "+fs.getseparator()); for (FileStore store : fs.getfilestores()) { printdetails(store); } for (Path root : fs.getrootdirectories()) { System.out.println(root); }

62 Példakód } 148/62 } public static void printdetails(filestore store) { try { String name = store.name(); String type = store.type(); double ts = ltod(store.gettotalspace()); double us = ltod(store.getunallocatedspace()); double as = ltod(store.getusablespace()); System.out.println(""); System.out.println("Name: "+ name + " Type: "+ type); System.out.println("Total: " + ts + " GB"); System.out.println("Unallocated: " + us + " GB"); System.out.println("Available: " + as + " GB"); } catch (IOException e) { e.printstacktrace(); } } public static double ltod (long x){ double a = x / Math.pow(1024, 3); a = Math.round(a * 100) / 100d; return a;

63 java.nio File Management API FileSystemProvider java.nio.file.spi FileTypeDetector FileSystems java.nio.file FileSystem Path DirectoryStream FileStore FileRef FileStore AttributeView java.nio.file.attribute FileAttribute View 148/63 AttributeView

64 Path Útvonal (ösvény) Tartalma egy útvonal amellyel egy fájlt, könyvtárat, vagy linket azonosítunk. Az ösvény tartalmazhat egy gyökérelemet, könyvtárak sorát és fájlnevet. Pl: /usr/staff/pisti/aaa.txt c:\pisti\java\aaa.txt Hasonlít a java.io.file objektumra, de az rendszer független módon ábrázolja a fájlnevet, ezért Multi-platform programok esetén használata gondot okozhat. A Path mindig az adott rendszertől függ, pl: unix-ban: /valami/adat.txt windowsban: c:\valami\adat.txt. 148/64

65 Path Útvonal (ösvény) A Path egy interfész a java.nio csomagban, ezért nem példányosítható Közvetlen kapcsolatban áll a java.io.file objektummal: egymásba konvertálhatók: File file = new File("C:\\proba.txt"); Path path = file.topath(); Path path = Paths.get("C:\\proba.txt"); File file = path.tofile(); Kétféle műveletet végezhetünk vele: útvonal műveletek (összehasonlítás, ellenőrzés ) fájl műveletek (másolás, törlés, átnevezés ) 148/65

66 Path Útvonal (ösvény) Path objektum létrehozása: A FileSystem segítségével: FileSystem fs = FileSystems.getDefault(); Path p1 = fs.getpath("c:\\java\\ea6\\prg.java"); A Paths segítségével: Path p2 =Paths.get("C:\\Java\\ea6\\Prg.java"); Path p3 =Paths.get("C:","Java","ea6","Prg.java"); Az io.file segítségével: File file = new File("C:\\Java\\ea6\\Prg.java"); Path p4 = file.topath(); 148/66

67 Path Útvonal (ösvény) Path név részek kinyerése: String tostring() String getfilename() Path getparent() Path getroot() int getnamecount() Path getname(int index) Path subpath(int beginindex, int endindex) Iterator<Path> iterator() 148/67

68 Példakód import java.nio.file.path; import java.nio.file.paths; public class FS2 { public static void main(string[] args) { Path p1 = Paths.get("c:\\Java8\\ea6\\test1.txt"); printdetails(p1); } Path p2 = Paths.get("prbdir", "test1.txt"); printdetails(p2); 148/68

69 Példakód } public static void printdetails(path p) { System.out.println(""); System.out.println("Details for path: " + p); } 148/69 int count = p.getnamecount(); System.out.println("Name count: " +count); for (int i = 0; i < count; i++) { Path name = p.getname(i); System.out.println("Name at index " +i+ " is " +name); } Path parent = p.getparent(); Path root = p.getroot(); Path filename = p.getfilename(); System.out.println("Parent: "+parent+", Root: "+root+ ", File Name: " + filename); System.out.println("Absolute Path: " + p.isabsolute());

70 Path Útvonal (ösvény) Path informálódás, átalakítás: boolean isabsolute() Path normalize() Path toabsolutepath() Path torealpath() Uri touri() Path resolve(path other) Path resolve(string other) Path relativize(path other) 148/70

71 Példakód /71 Path p1 = Paths.get("C:\\Java_8\\..\\\\ea6\\test1.txt"); Path p1n = p1.normalize(); System.out.println(p1 + " normalized to " + p1n); Path p2 = Paths.get("J8\\ea6\\x\\..\\..\\test.txt"); Path p2n = p2.normalize(); System.out.println(p2 + " normalized to " + p2n); Path p3 = Paths.get("C:\\Java8"); Path p4 = Paths.get("ea6\\test1.txt"); System.out.println(p3.resolve(p4)); Path p5 = Paths.get("C:\\test.txt"); System.out.println(p3.resolve(p5)); Path p6 = Paths.get("\\"); System.out.println(p3.resolve(p6)); Path p7 = Paths.get("J8", "ea6", "x2"); Path p8 = Paths.get("J8\\ea6"); System.out.println(p7.relativize(p8)); System.out.println(p8.relativize(p7));

72 Path Útvonal (ösvény) Path egyéb műveletek: FileSystem getfilesystem() boolean startswith(path other) boolean startswith(string other) boolean endswith(path other) boolean endswith(string other) int compareto(path other) boolean equals(object other) 148/72

73 Példakód Path p1 = Paths.get("Talon\\3\\Emp.java"); Path p2 = Paths.get("Talon\\3\\Emp.java"); Path p3 = Paths.get("bitman\\Emp.java"); System.out.println("p1: "+p1); System.out.println("p2: "+p2); System.out.println("p3: "+p3); boolean eqp1p2 = p1.equals(p2); System.out.println("eqp1p2: "+eqp1p2); boolean eqp1p3 = p1.equals(p3); System.out.println("eqp1p3: "+eqp1p3); int cp1p2 = p1.compareto(p2); System.out.println("cp1p2: "+cp1p2); int cp1p3 = p1.compareto(p3); System.out.println("cp1p3: "+cp1p3); 148/73

74 Példakód Path p4 = Paths.get("Talon\\3\\pw.txt"); Path p5 = Paths.get("Emp.java"); Path p6 = Paths.get("java"); System.out.println("p4: "+p4); System.out.println("p5: "+p5); System.out.println("p6: "+p6); boolean swp1p4 = p1.startswith(p4); System.out.println("swp1p4: "+swp1p4); boolean ewp1p5 = p1.endswith(p5); System.out.println("ewp1p5: "+ewp1p5); boolean ewp1p6 = p1.endswith(p6); System.out.println("ewp1p6: "+ewp1p6); boolean isfp1p3 = Files.isSameFile(p1, p3); System.out.println("isfp1p3: "+isfp1p3); 148/74

75 Path - Linkek Hard link: A hard link egy másik név az eredeti fájlra, vagyis a két fájl tartalma azonos, és a létrehozás után nem is lehet megmondani, melyik volt az eredeti fájl és melyik a hard link. Hard link csak ugyanabban a fájlrendszerben hozható létre, mint az eredeti, és a mutatott fájl nem lehet könyvtár. Symbolic link: Olyan fájl, melynek tartalma egy másik fájl elérési útvonala A legtöbb program a symlinket arra használja, hogy eljusson a mögötte levő fájlhoz (indirekt fájlelérés). Fontos: egyik link sem egyezik meg a parancsikonnal! 148/75

76 Példakód import java.nio.file.*; public class FK2 { public static void main(string args[]) throws Exception { Path existingfile = Paths.get("Talon\\3\\Emp.java"); Path link = Paths.get("bitman\\Emp.link"); Files.createLink(link, existingfile); Path symlink = Paths.get("bitman\\Emp.symlink"); Files.createSymbolicLink(symLink, existingfile); System.out.println(symLink); 148/76

77 Példakód } Path link2 = Paths.get("bitman\\Emp.symlink"); System.out.println(Files.isSymbolicLink(link2)); System.out.println(Files.readSymbolicLink(link2)); Path t = Files.readSymbolicLink(link2); System.out.println(t.isAbsolute()); System.out.println(t.toAbsolutePath()); } Fontos: a műveletek végrehajtásához megfelelő jogosultságok szükségesek! Futtassuk rendszergazdaként az alkalmazást! 148/77

78 Path URI Az URI (Uniform Resource Identifier), egységes erőforrás-azonosító, egy rövid karaktersorozat, amelyet egy webes erőforrás azonosítására használunk Az URI az erőforrást kétféleképp azonosíthatja: hely szerint (URL): hol lehet az erőforrást elérni név szerint (URN): egy tulajdonság nevével, és értékével urn:isbn: (egy könyv az isbn alapján) Path pth = Paths.get("Talon\\3\\Emp.java"); java.net.uri pthuripath = pth.touri(); System.out.println("Absolute Path: " + pth.toabsolutepath()); System.out.println("URI Path: " + pthuripath); 148/78

79 Példakód } public static void printdetails(path p) { System.out.println(""); System.out.println("Details for path: " + p); } 148/79 int count = p.getnamecount(); System.out.println("Name count: " +count); for (int i = 0; i < count; i++) { Path name = p.getname(i); System.out.println("Name at index " +i+ " is " +name); } Path parent = p.getparent(); Path root = p.getroot(); Path filename = p.getfilename(); System.out.println("Parent: "+parent+", Root: "+root+ ", File Name: " + filename); System.out.println("Absolute Path: " + p.isabsolute());

80 A java.nio.files osztály fájl műveletei Fájl (dir, link) ellenőrzés: boolean exists(path path, LinkOption... options) az options értéke lehet: LinkOption.NOFOLLOW_LINKS értéke: igaz, ha létezik, és hamis ha nem létezik vagy nem megállapítható (nincs jog) boolean notexists(path path, LinkOption... options) értéke: igaz, ha nem létezik és hamis ha létezik vagy nem megállapítható 148/80

81 A java.nio.files osztály fájl műveletei Fájl (dir, link) ellenőrzés: boolean isdirectory(path path, LinkOption... options) boolean isregularfile(path path, LinkOption... options) boolean issymboliclink(path path) boolean isexecutable(path path) boolean isreadable(path path) boolean iswritable(path path) 148/81

82 A java.nio.files osztály fájl műveletei Fájl (dir, link) másolás Path copy(path source, Path target, CopyOption... options) Az options tartalmazhatja: REPLACE_EXISTING: felülír, ha a cél létezik COPY_ATTRIBUTES: másolja az attribútumokat is (rendszerfüggő) NOFOLLOW_LINKS: link esetén csak a linket másolja. Pl: fájl (source) másolása ugyanazon a néven egy másik könyvtárba (target): Path source = Paths.get("Talon\\3\\Emp.java"); Path target = Paths.get("bitman"); 148/82 Path t; t = target.resolve(source.getfilename()); Files.copy(source, t);

83 A java.nio.files osztály fájl műveletei Fájl (dir, link) mozgatás (áthelyezés) Path move(path source, Path target, CopyOption... options) Az options tartalmazhat: REPLACE_EXISTING: felülír, ha a cél létezik ATOMIC_MOVE: atomi műveletként mozgat, ha az opr. nem támogatja akkor kivételt dob. Ha a forrás nem létezik: NoSuchFileException Ha a cél már létezik: FileAlreadyExistsException Ha nincs jogosultságunk: AccessDeniedException Path source = Paths.get("Talon\\3\\a.txt"); Path target = Paths.get("bitman"); 148/83 Path t; t = target.resolve(source.getfilename()); Files.move(source, t);

84 A java.nio.files osztály fájl műveletei Fájl (dir, link) törlés void delete(path path) ha a path egy link, akkor csak a link törlődik ha a path egy dir, akkor csak ha üres boolean deleteifexists(path path) ha a path nem létező, akkor nem kivételt dob, hanem hamisat ad Path delfile = Paths.get("bitman\\a.txt"); Files.delete(delFile); 148/84

85 A java.nio.files osztály fájl műveletei Fájl létrehozása Path createfile(path path, FileAttribute<?>... attrs) Üres file-t hoz létre Ha a file már létezik, akkor kivételt dob Ha az útvonalban megadott valamelyik elem nem létezik, kivételt dob Atomi műveletként hozza létre a file-t és állítja be a megadott attribútumokat (attribútumokról később) Lehet létrehozni file-okat a már tanult csatornák írásával is (pl: FileOutputStream, FileWriter ) Path newfile = Paths.get("bitman\\a.txt"); Files.createFile(newFile); 148/85

86 A java.nio.files osztály fájl műveletei Könyvtár létrehozása Path createdirectory(path dir, FileAttribute<?>... attrs) Létrehoz egy üres könyvtárat Ha már létezik a könyvtár, vagy az útvonalban megadott valamelyik elem nem létezik, kivételt dob Atomi művelet Path createdirectories(path dir, FileAttribute<?>... attrs) Létrehozza a könyvtárat, ha a szülők nem léteznek azokat is létrehozza Nem atomi művelt, azaz lehetséges, hogy a szülő létrejött, de a gyermek már nem 148/86 Path newdir = Paths.get("X56"); Files.createDirectory(newDir); Files.createDirectories(Paths.get("A\\B\\C"));

87 A java.nio.files osztály fájl műveletei Link létrehozása: Szimbolikus link (soft link): Path createsymboliclink(path link, Path target, FileAttribute<?>... attrs) Ha az operációs rendszer nem támogatja a soft linket, akkor kivételt dob Hard link: Path createlink(path link, Path existing) Path existingfile = Paths.get("Talon\\3\\Emp.java"); Path link = Paths.get("bitman\\Emp.link"); Files.createLink(link, existingfile); Path symlink = Paths.get("bitman\\Emp.symlink"); Files.createSymbolicLink(symLink, existingfile); 148/87

88 A java.nio.files osztály fájl műveletei Temp file, directory létrehozás Path createtempfile(path dir, String prefix, String suffix, FileAttribute<?>... attrs) Létrehoz egy temporary file-t a megadott directory-ban, legenerálva a nevet, a megadott névkezdettel, véletlen számokból álló folytatással, a megadott kiterjesztéssel, és a megadott attribútumokkal a prefix és a suffix lehet null ha a suffix null, akkor.tmp a kiterjesztés Path tmpd = Paths.get("C:\\temp"); Files.createTempFile(tmpd, "bitm", ".txt"); 148/88

89 A java.nio.files osztály fájl műveletei Temp file, directory létrehozás Path createtempfile(string prefix, String suffix, FileAttribute<?>... attrs) A fájl az alapértelmezett temp könyvtárban jön létre Path createtempdirectory(path dir, String prefix, FileAttribute<?>... attrs) Létrehoz egy temporary directory-t a megadott directoryban, legenerálva a nevét a megadott kezdettel, valamint a megadott attribútumokkal. Path createtempdirectory(string prefix, FileAttribute<?>... attrs) A direktory az alapértelmezett temp directory-ban jön létre Files.createTempDirectory(Paths.get("C:\\temp"), 148/89 "Bitm");

90 A java.nio.files osztály fájl műveletei File olvasás, írás: Stream kinyerés: InputStream newinputstream(path path, OpenOption... options) megnyitja olvasásra a megadott file-t és visszaad egy stream-t amivel olvashatjuk, az options egyenlőre csak READ lehet. BufferedReader newbufferedreader(path path, Charset cs) létrehoz egy BufferedReader stream-et, amivel olvashatjuk a megadott file-t bufferelten a megadott dekódolással. 148/90

91 A java.nio.files osztály fájl műveletei File olvasás, írás: Stream kinyerés: OutputStream newoutputstream(path path, OpenOption... options) 148/91 Megnyitja (létrehozza) írásra a megadott file-t és visszaad egy stream-et,a mivel írhatjuk Az options lehetséges tagjai (nem teljes): CREATE: megnyitja ha létezik, létrehozza ha nem CREATE_NEW: létrehozza, ha már létezik akkor kivételt dob APPEND: megnyitja ha létezik különben kivételt dob, végére ír TRUNCATE_EXISTING: ha létezik üressé teszi CREATE,APPEND: a kettő kombinációja CREATE,TRUNCATE_EXISTING: a kettő kombinációja - ha nem adok meg options-t, akkor CREATE,TRUNCATE_EXISTING

92 A java.nio.files osztály fájl műveletei File olvasás, írás: Stream kinyerés: BufferedWriter newbufferedwriter(path path, Charset cs, OpenOption... options) Mint az előző csak bufferelt karakter alapú stream-et kapunk, ami a megadott Charset szerinti kódolással ír. 148/92

93 A java.nio.files osztály fájl műveletei File olvasás, írás: Channel kinyerés: SeekableByteChannel newbytechannel(path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) Megnyitja vagy létrehozza a file-t és visszaad egy FileChannel-t, amivel tetszőleges pozícióba írhatok vagy olvashatok. Az attrs, akkor számít, ha új file-t hozok létre. Ezek lesznek az attribútumai. Mivel csak az utolsó paraméter lehet -s, ezért a megnyitási opciókat halmazban lehet megadni. Pl. WritableByteChannel wbc = Files.newByteChannel(path, EnumSet.of(CREATE,APPEND)); 148/93

94 A java.nio.files osztály fájl műveletei File olvasás, írás: Channel kinyerés: SeekableByteChannel newbytechannel(path path, OpenOption... options) ua. mint előző, csak nem lehet megadni attribútumokat az esetleg létrejövő file-nak, ezért a nyitási opciókat újra a szokott módon lehet megadni 148/94

95 A java.nio.files osztály fájl műveletei File olvasás, írás: long copy(inputstream in, Path target, CopyOption... options) A stream tartalmát kiolvassa és menti a megadott file-ba. Pl. (csak részlet) URI u = URI.create(" try(inputstream in = u.tourl().openstream()){ Files.copy(in, path); } 148/95

96 A java.nio.files osztály fájl műveletei File olvasás, írás: long copy(inputstream in, Path target, CopyOption... options) A stream tartalmát kiolvassa és menti a megadott file-ba. Pl. (csak részlet) URI u = URI.create(" try(inputstream in = u.tourl().openstream()){ Files.copy(in, path); } Tibi: 82 long copy(path source, OutputStream out) Másolja a megadott file tartalmát a megadott stream-re 148/96

97 A java.nio.files osztály fájl műveletei File olvasás, írás: byte[] readallbytes(path path) Az összes byte-t kiolvassa a megadott file-ból és visszaadja egy tömbben. Nagy fájloknál nem ajánlott a használata. pl. byte[] arr = Files.readAllBytes(file); List<String> readalllines(path path, Charset cs) Az összes sort kiolvassa a megadott file-ból a megadott dekódolást használva. Nagy fájloknál nem ajánlott Sor elválasztó jelek: \n, \r, \r\n 148/97

98 A java.nio.files osztály fájl műveletei File olvasás, írás: Path write(path path, byte[] bytes, OpenOption... options) A teljes tömb kiírása a file-ba. A megnyitási opciók a szokásosak Path write(path path, Iterable<? extends CharSequence> lines, Charset cs, OpenOption... options) Az összes sor kiírása a file-ba a megadott kódolással 148/98

99 java.nio.file.attribute 148/99

100 A java.nio.file.attribute osztály Ez a csomag tartalmazza a fájlok attribútumait kezelő eljárásokat 148/100 A fájlok tulajdonságait, felhasználhatóságát, hatóköreit leíró jelölések az attribútumok. Az, hogy milyen attribútumokat vehetnek fel a fájlok, az adott fájlrendszertől függ. Az attribútumok attribútum csoportokba vannak szervezve: Basic, Dos, FileOwner, Posix, Acl, UserDefined

101 A java.nio.file.attribute osztály A BasicFileAttributeView kezeli az alapvető fájl attribútumokat, például a létrehozási időt, az utolsó hozzáférési időt, az utolsó módosított időt, a méretet, a fájltípust, fájlok, könyvtárak, szimbolikus linkek, és egyéb bejegyzések esetén, és a fájlokat azonosító egyedi hexa kódokat Ez a csomag minden platformon támogatott. A DosFileAttributeView a DOS specifikus fájl tulajdonságokat, pl: rejtett fájl, rendszerfájl, archív fájl és csak olvasható fájl. 148/101 Ez csak a DOS-t támogató rendszereken érhető el, mint a Microsoft Windows.

102 A java.nio.file.attribute osztály A PosixFileAttributeView kezeli a UNIX rendszereken elérhető attribútumokat. Lehetővé teszi a tulajdonosi, a csoporthoz tartozók, és mindenki más jogosultságainak kezelését. A FileOwnerAttributeView kezeli a fájl tulajdonosának jogait. Az AclFileAttributeView kezeli az ACL (Access Control List) fájlt. A UserDefinedFileAttributeView a felhasználó által definiált attribútumokat kezeli. 148/102

103 A java.nio.file.attribute osztály Attribútumok kezelése: Nem minden csoportot támogat minden op. rendszer A Basic csoportot minden op.rendszer támogatja. A többiről tájékozódhatunk a FileStore metódusaival: boolean supportsfileattributeview(string name) boolean supportsfileattributeview(class<? extends FileAttributeView> type) 148/103

104 Példakód import java.nio.file.*; import java.nio.file.attribute.*; Path path = Paths.get("C:"); try { FileStore fs = Files.getFileStore(path); printdetails(fs, BasicFileAttributeView.class); printdetails(fs, DosFileAttributeView.class); printdetails(fs, PosixFileAttributeView.class); printdetails(fs, FileOwnerAttributeView.class); printdetails(fs, AclFileAttributeView.class); printdetails(fs, UserDefinedFileAttributeView.class); } catch (Exception ex) {ex.printstacktrace();} public static void printdetails(filestore fs, Class<? extends FileAttributeView> attribclass) { boolean supported = fs.supportsfileattributeview(attribclass); System.out.format("%s is supported: %s%n", attribclass.getsimplename(), supported); } 148/104

105 A java.nio.file.attribute osztály A legfontosabb interfészek: FileStoreAttributeView FileStoreSpaceAttributeView DosFileAttributeView BasicFileAttributeView PosixFileAttributeView AttributeView FileAttributeView FileOwnerAttributeView AclFileAttributeView java.nio.file.attribute UserDefineAttributeView Interface 148/105

106 A java.nio.file.attribute osztály Attribútumok kezelése: Az attribútumok olvasásához készítettek minden csoporthoz egy interface-t. Pl. BasicFileAttributes, DosFileAttributes, stb. Ennek minden attribútumhoz van egy kiolvasó metódusa Ezt megkaphatom a view readattributes() metódusával, pl: BasicFileAttributes attr = bview.readattributes(); vagy a Files readattributes(..) metódusával, pl: BasicFileAttributes attr = Files.readAttributes(p, BasicFileAttributes.class); 148/106

107 A java.nio.file.attribute osztály Attribútumok kezelése: A Files osztálynak vannak metódusai, amivel közvetlenül, név szerint olvashatom, írhatom bármelyik csoportba tartozó attribútumokat. A név szintaktikája: csoportnév: attrnév. (pl. basic:size) Az olvasás metódusa a getattribute, az írásé a setattribute. A Files osztálynak a leggyakrabban használt attribútum kezelésekre külön metódusa van kényelmi okokból. (pl: van getlastmodifiedtime, setlastmodifiedtime, ) 148/107

108 A java.nio.file.attribute osztály Attribútumok kezelése: olvasás A megfelelő FileAttributes metódusaival (amit persze kétféleképpen kaphatok meg mint láttuk) A Files osztály getattribute metódusával A gyakran használtakat a Files osztály közvetlen metódusaival Attribútumok kezelése: írás A view módosító metódusaival A Files osztály setattribute metódusával A gyakran használtakat a Files osztály közvetlen metódusaival 148/108

109 A java.nio.file.attribute osztály A Basic csoport attribútumai: lastmodifiedtime, lastaccesstime, creationtime, size, isregularfile, isdirectory, issymboliclink, isother, filekey 148/109

110 A java.nio.file.attribute osztály A Basic csoport attribútumai: Az attribútumok lekérdezése név szerint a Files osztály getattribute metódusával. Pl Path p = Paths.get("bitman\\Emp.java"); long a = (Long)Files.getAttribute(p, "basic:size"); System.out.println(p+" file size is: "+a+" bytes"); System.out.println("File last modified time is: "+ Files.getAttribute(p, "basic:lastmodifiedtime")); 148/110

111 A java.nio.file.attribute osztály A Basic csoport attribútumai: Az attribútumok lekérdezhetőek a BasicFileAttributes segítségével: Path p = Paths.get("bitman\\Emp.java"); BasicFileAttributes bfa = Files.readAttributes(p, BasicFileAttributes.class); System.out.format("Creation Time: %s %n", bfa.creationtime()); System.out.format("Last Access Time: %s %n", bfa.lastaccesstime()); 148/111

112 A java.nio.file.attribute osztály A Basic csoport attribútumai: Lekérdezhetjük a teljes Basic attributum csoportot a BasicFileAttributesView segítségével: BasicFileAttributeView bfav = Files.getFileAttributeView(p, BasicFileAttributeView.class); BasicFileAttributes bfa = bfav.readattributes(); System.out.format("Size:%s bytes %n", bfa.size()); System.out.format("Last Modified Time: %s %n", bfa.lastmodifiedtime()); 148/112

113 A java.nio.file.attribute osztály A Basic csoport attribútumai: A legfontosabb attribútumok lekérdezésére rendelkezésre állnak a Files osztály metódusai: long size(path) boolean ishidden(path path) boolean isregularfile(path path, LinkOption... options) boolean isdirectory(path path, LinkOption... options) boolean issymboliclink(path path) FileTime getlastmodifiedtime(path path, LinkOption... options) 148/113 Path p = Paths.get("bitman\\Emp.java"); System.out.println("File size is: "+Files.size(p));

114 A java.nio.file.attribute osztály A Basic csoport attribútumai: Az attribútumok módosíthatók a Files osztály setattribute metódusával. A basic csoportban csak a dátumok módosíthatók: lastmodifiedtime, lastaccesstime, creationtime 1. Path p = Paths.get("bitman\\Emp.java"); FileTime time = FileTime.fromMillis(System.currentTimeMillis()); Files.setAttribute(p, "basic:creationtime", time); A lastmodifiedtime attribútum módosítható a Files osztály setlastmodifiedtime metódusával: 2. Files.setLastModifiedTime(p, time); 148/114

115 A java.nio.file.attribute osztály A Basic csoport attribútumai: Az idő attribútumok együtt módosíthatók a BasicFileAttributesView osztály settimes metódusával import java.nio.file.*; import java.nio.file.attribute.*; import java.time.instant; Path p = Paths.get("bitman\\Emp.java"); BasicFileAttributeView bfav = Files.getFileAttributeView(p, BasicFileAttributeView.class); FileTime newlastmodifiedtime = null; FileTime newlastaccesstime = null; FileTime newcreatetime = FileTime.from(Instant.now()); bfav.settimes(newlastmodifiedtime, newlastaccesstime, newcreatetime); 148/115

116 A java.nio.file.attribute osztály A DOS csoport attribútumai: readonly, hidden, system, archive Lekérdezhetők: A Files osztály getattribute metódusával A DosFileAttributes isreadonly, ishidden, issystem, isarchive metódusaival Módosíthatók: A view setreadonly, sethidden, setarchive, setsystem metódusaival A Files osztály setattribute metódusával 148/116

117 A java.nio.file.attribute osztály Az Owner csoport attribútumai: owner 148/117 Lekérdezhetők: A Files osztály getattribute metódusával UserPrincipal princ = (UserPrincipal)Files.getAttribute(p, "owner:owner"); A FileOwnerAttributeView getowner metódusával A Files osztály getowner metódusával Módosítható: A FileOwnerAttributeView setowner metódusával A Files osztály setowner metódusával A felhasználó UserPrincipal-jának előállításához a FileSystem-től le lehet kérni egy lookup service-t és azzal megkeresni a megadott nevű felhasználót: UserPrincipal user = fs.getuserprincipallookupservice().lookupprincipalbyname("kovacs25");

118 A java.nio.file.attribute osztály A posix csoport attribútumai: group, permissions A basic és a owner view-ek leszármazottja A permissions PosixFilePermission enum elemek halmaza a szokásos rwxrwxrwx-et fejezi ki Lekérdezhető: A Files osztály getattribute metódusával A PosixFileAttributes group, permissions metódusaival A permissions lekérdezhető a Files getposixfilepermissions metódusával 148/118

119 A java.nio.file.attribute osztály A posix csoport: Módosítható: A view setgroup, setpermissions metódusával Pl: a csoport állításához az owner beállításához hasonlóan egy lookup service-el megkerestetjük a kívánt csoportot, majd beállítjuk: GroupPrincipal group = fs.getuserprincipallookupservice().lookupprincipalbygroupname("staff"); Files.getFileAttributeView(p, PosixFileAttributeView.class).setGroup(group); A permissions módosítható a Files osztály setposixfilepermissions metódusával, pl: Set<PosixFilePermission> perms = EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ); 148/119 vagy: Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxr-----"); Files.setPosixFilePermissions(p,perms);

120 A java.nio.file.attribute osztály Az acl csoport attribútumai: acl Az acl egy AclEntry típusú lista. Egy AclEntry adatai: type: engedélyezés vagy letíltás (AclEntryType) principal: a felhasználó UserPrincipal-ja permissions: a jogok (Set<AclEntryPermissions>) flags: a bejegyzés öröklődését szabályozó flagek halmaza (Set<AclEntryFlag>) 148/120

121 A java.nio.file.attribute osztály Az acl csoport: Az AclEntry-k létrehozásához builder osztályt lehet használni (építő tervezési minta) Példa: 1. UserPrincipal létrehozása UserPrincipal joe = p.getfilesystem().getuserprincipallookupservice().lookupprincipalbyname("joe"); 2. view létrehozása AclFileAttributeView view = Files.getFileAttributeView(file, AclFileAttributeView.class); 3. Entry felépítése 148/121 AclEntry entry = AclEntry.newBuilder().setType(AclEntryType.ALLOW).setPrincipal(joe).setPermissions(AclEntryPermission.READ_DATA, AclEntryPermission.READ_ATTRIBUTES).build();

122 A java.nio.file.attribute osztály Az acl csoport: 4. Lista lekérdezése, új entry beszúrása (a deny-k elé), lista beállítása List<AclEntry> acl = view.getacl(); acl.add(0, entry); view.setacl(acl); 148/122

123 148/123

124 Teszt 1. Melyik két fogalom hiányzik az alap (ős) stream osztályok táblázatából? Típus - Irány Bemeneti Kimeneti Bájt InputStream OutputStream Karakter?????????? CharReader, CharWriter StringReader, StrigWriter Reader, Writer DataInpuStream, DataOutputStream PrintStream, PrintWriter 148/124

125 Teszt 2. Melyik a Java alapvető I/O csomagja? java.input java.io javax.nio java.inout java.io.file 148/125

126 Teszt 3. Egy stream típusú adatfolyamban áramolhatnak az adatok mindkét irányba? Nem, az adatfolyamban lévő adatok csak egy irányba áramolhatnak Nem, a stream adatfolyam mindig csak a kimenetre szolgál. Igen, egy stream adatfolyam egyszerre írható és olvasható Igen, de egyszerre csak egy irányba 148/126

127 Teszt 4. Mi a puffer? Olyan stream, aminek a bemenete egy bizonyos adattípus, amit átmenetileg tárol, és magasabb rendű adattípussá alakítja Olyan file, ami beállított számú bájtot tud tárolni Olyan stream, ami meghatározott számú bájtot tud tárolni A memória egy része, amely a bemeneti vagy a kimeneti adatok tárolóterületeként szolgál. 148/127

128 Teszt 5. Melyik módszerrel kell megnyitni a létező myfile.txt fájl, úgy, hogy karaktereket tudjunk a végéhez hozzáírni? FileWriter fw = new FileWriter("myFile.txt"); FileWriter fw = new FileWriter("myFile.txt", true); FileWriter fw = new FileWriter("myFile.txt", false); FileWriter fw = new FileWriter("myFile.txt", FileWriter.APPEND); 148/128

129 Teszt 6. Mire szolgál a flush() metódus? Törli az összes adatot a megnyitott fájlból Törli az összes adatot a megadott stream-ből Inicializálja a kimeneti stream-et A puffer teljes tartalmát kiírja a megnyitott kimenetre 148/129

130 Teszt 7. A bemeneti vagy a kimeneti műveletek biztonságosabbak? A bemeneti A kimeneti Egyformán biztonságosak 148/130

131 Teszt 8. Az abc.txt fájlban csak egyetlen szó van, ezt kell beolvasni. Keresse meg, és javítsa ki a programban lévő hibákat! import java.nio.*; public class ABC { public static void main(string[] args) { BufferedReader reader = new Reader(new FileReader("abc.txt")); reader.open(); System.out.println(reader.readLine()); reader.close(); } } /131

132 Teszt 9. A readline() metódus milyen típusú adattal tér vissza? A megnyitott fájl típusától függően lehet char[ ] vagy byte[ ] char[ ] byte[ ] String byte int 148/132

133 Teszt 10. Mi történik, ha olvasáskor a readline() metódus eléri a fájl végét? Kivételt dob: EndOfFileException Visszaad egy üres stringet: "" Visszaad a nulla értéket: 0 Visszaad egy null értéket Mivel nincs több adat, leáll a beolvasó ciklus Kivételt dob: NoMoreDataException 148/133

134 Teszt 11. A FileReader osztály segítségével be lehet olvasni, és a képernyőn megjeleníteni egy Java bájtkódot tartalmazó fájl (.class) tartalmát? Nem, a bájtkód csak végrehajtható, nem olvasható Nem, a bájtkód fájl karakterként nem értelmezhető kódokat tartalmaz Igen, tetszőleges fájl beolvasható a FileReader-rel Csak akkor, ha a fájlt ugyanazzal a virtuális géppel olvassuk, amivel létrehozták 148/134

135 Teszt 12. Melyik módszerrel kell megnyitni a létező mydata.dat fájl, úgy, hogy a létező tartalmát felülírjuk? FileOutputStream fos = new FileOutputStream( "mydata.dat", true ) FileOutputStream fos = new FileOutputStream( "mydata.dat") DataOutputStream dos = new DataOutputStream( "mydata.dat" ) FileOutputStream fos = new FileOutputStream( new BufferedOutputStream( "mydata.dat") ) 148/135

136 Teszt 13. Egy program 10 darab int értéket ír egy fájlba (FileOutputStream). Hány bájt lesz a fájl mérete? A kiírásra kerülő számok értékétől (nagyságától) függ! /136

137 Teszt 14. Melyik metódussal lehet beolvasni egy DataInputStreamből egy int értéket? ReadInt() ReadInteger() readint() read() (int)readdata() 148/137

138 Teszt 15. A bináris fájlok írása és olvasása gyorsabb vagy lassabb a karakter szervezésű fájlokénál? Lassabb, mivel a primitív adatok több memóriát igényelnek a karaktereknél. Lassabb, mivel a primitív adatokat az IO műveletek végrehajtásakor karakterekké kell alakítani. Gyorsabb, mivel a bináris adatok nem használnak puffert. Gyorsabb, mivel a bináris adatok rövidebbek, mint a karakteresek, és nem igényelnek semmiféle átalakítást. 148/138

139 Teszt 16. Lehetséges a Java nyelv segítségével úgy lemásolni egy fájlt, hogy nem tudjuk a benne lévő adatok formátumát? Nem, a másoláshoz muszáj ismernünk a fájlban lévő bájtok formátumát. Nem, muszáj legalább a fájl fejlécében lévő adatokat ismerni a másoláshoz. Igen, de csak akkor működik a másolás helyesen, ha az első adat formátuma megegyezik az összes többi adat formátumával. Igen, a bájtról bájtra végrehajtott másolás működik tetszőleges típusú fájlra. 148/139

140 Teszt 17. Melyik csomagban van a File osztály? java.util.io java.io java.io.file javax.nio java.nio 148/140

141 Teszt 18. A Java könyvtárban állva, szeretnénk fizikailag létrehozni az aaa.txt fájlt. A kódot megírtuk, de hibás. Javítsa ki a hibákat! c:\program\java\aaa\bbb\aaa.txt import java.util.io.*; public class FKP { public static void main(string args[]) throw Exception{ File nf = new File("\aaa\bbb", "aaa.txt"); nf.create(); } } /141

142 Teszt 19. Melyik metódus segítségével tudjuk megállapítani, hogy egy file létezik-e? isfile() isdirectory() exists() list() created() 148/142

143 Teszt 20. Melyik metódussal készítünk egy új könyvtárat? mkdir() mkdirectory() makedirectory() Directory.new() Directory.make() 148/143

144 Teszt 21. Melyik metódussal tudunk letörölni egy fájlt a fájlrendszerből? remove() delete() erase() terminate() drop() 148/144

145 Teszt 22. Melyik módszerrel alakítható át egy File objektum Path objektummá? File file = new File("C:\\proba.txt"); Path path; path = file; path = file.topath(); path = file.tofile(); path = new Path(file.getFile()); path = file.tostring(); 148/145

146 Teszt 23. Melyik módszer helyes az aaa.txt nevű path objektum létrehozására, mely az aktuális könyvtár alatti, aaa nevű könyvtárba kerül? FileSystem fs = FileSystems.getDefault(); Path path = fs.getpath("aaa\\aaa.txt"); Path path = Paths.get("aaa\\aaa.txt"); Path path = Paths.get("aaa", "aaa.txt"); File f = new File("aaa\\aaa.txt"); Path path4 = f.topath(); 148/146

147 Teszt 24. Adott az alábbi fájl. Milyen típusú eredményt, és milyen értéket ad vissza a getname(1) metódus?? Path path = Paths.get("c:/aaa/bbb/abc.txt");??? = path.getname(1); Eredmény típusa: String char[ ] Path boolean Eredmény értéke: aaa c:\aaa bbb c:\aaa\bbb.txt 148/147

148 Teszt 25. Hogyan lehet meghatározni egy fájlrendszerbeli fájl méretét? Path p = Paths.get("aaa\\abc.txt"); p.size(); p.getsize(); p.length(); File(p).size(); Files.size(p); 148/148

149 VÉGE VÉGE 148/149

Java programozási nyelv 10. rész Input/output kezelés

Java programozási nyelv 10. rész Input/output kezelés Java programozási nyelv 10. rész Input/output kezelés Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/28 Tartalomjegyzék

Részletesebben

JAVA ALKALMAZÁSOK 5. ELŐADÁS 1/9/2017 1

JAVA ALKALMAZÁSOK 5. ELŐADÁS 1/9/2017 1 JAVA ALKALMAZÁSOK 5. ELŐADÁS 1/9/2017 1 TARTALOM Input/Output oadatfolyamok ofájlkezelés okonzol 1/9/2017 2 Input/Output, adatfolyamok 1/9/2017 3 INPUT/OUTPUT Szinte minden alkalmazás használ valamilyen

Részletesebben

Reader /Writer InputStreamReader, OutputStreamWriter

Reader /Writer InputStreamReader, OutputStreamWriter 9. gyakorlat Input, output A Java adatfolyamokkal dolgozik (stream). [Ez olyan objektum, ahova tesszük vagy kapjuk az adatot úgy, hogy nem kell foglalkozunk a file-al, hálózattal,stb.] 2 típusa van: InputStream

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java 9. gyakorlat Fájlkezelés A fájlkezelés Java-ban különböző osztályok összekapcsolásával történik. Minden egyes osztály valamilyen minimális szolgáltatást tesz hozzá a többihez.

Részletesebben

Be- és kimenet kezelése

Be- és kimenet kezelése Be- és kimenet kezelése A legelső program Üdvözlő szöveg kiírása a képernyőre class Hello { public static void main( String args[] ){ System.out.println("Hello World!"); } } Hogyan használjunk fájlokat?

Részletesebben

JAVA PROGRAMOZÁS 7.ELŐADÁS

JAVA PROGRAMOZÁS 7.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 7.ELŐADÁS 2014-2015 tavasz Állománykezelés 2 Állományok, bejegyzések 3 A java.io csomag Útvonalak 4 Absztrakt / valódi útvonal A valódi útvonal

Részletesebben

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés Kivételek kezelése (exception handling) Hibakezelés old style class Szamolo { void szamol( String s, int i ) { int d; if (i!= 0) d = (i+1)/i; else if (s!= null) d = s.length(); else if (i > 10) // applikációs

Részletesebben

Programozási technológia

Programozási technológia Programozási technológia Osztályszintű elérés Kivételkezelés, Fájlkezelés Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Osztályszintű elérés (statikusság) Az osztályban definiált attribútumok és műveletek

Részletesebben

Osztályszintű elérés, kivételkezelés, fájlkezelés

Osztályszintű elérés, kivételkezelés, fájlkezelés Programozási, kivételkezelés, fájlkezelés Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 2 3 4 2 (statikusság) Az osztályban definiált attribútumok és műveletek az osztályból példányosított

Részletesebben

Az új be- és kimenet könyvtár

Az új be- és kimenet könyvtár Az új be- és kimenet könyvtár import java.io.ioexception; import java.io.fileinputstream; import java.io.fileoutputstream; import java.nio.channels.filechannel; import java.nio.bytebuffer; class Masol

Részletesebben

Java programozási nyelv

Java programozási nyelv Szoftvertechnológia sáv Java programozási nyelv Dirk Louis-Peter Müller: Java (Belépés az internet világába) Panem kiadó, Budapest, 2002. Webvilág sorozat Készítette: Gregorics Tibor Vázlatos áttekintés

Részletesebben

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o Miért Java? széleskörben elterjedt Micro Edition - beágyazott rendszerek, régi telefonok Standard Edition - PC, android ezen alapul Enterprise Edition - vállalati programok, web service-ek multiplatform

Részletesebben

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Folyamok kezelése Fájlok írása/olvasása Folyamok kezelése Szabvány folyamok Eddig Kiírás a szöveges konzolra:

Részletesebben

Programozási nyelvek II.: JAVA

Programozási nyelvek II.: JAVA Programozási nyelvek II.: JAVA 5. gyakorlat 2017. október 9-13. 5. gyakorlat Programozási nyelvek II.: JAVA 1 / 34 Az 5. gyakorlat tematikája Kivételkezelés alapjai Be és kimenet BufferedReader, Scanner

Részletesebben

Abstract osztályok és interface-ek. 7-dik gyakorlat

Abstract osztályok és interface-ek. 7-dik gyakorlat Abstract osztályok és interface-ek 7-dik gyakorlat Abstract metódusok és osztályok Az OO fejlesztés során olyan osztályokat is kialakíthatunk, melyeket csak továbbfejlesztésre, származtatásra lehet használni,

Részletesebben

13. Állományok, bejegyzések 14. Folyamok 15. Közvetlen hozzáférésű állomány. Programozási technológia (Java) - III. / 1

13. Állományok, bejegyzések 14. Folyamok 15. Közvetlen hozzáférésű állomány. Programozási technológia (Java) - III. / 1 13. Állományok, bejegyzések 14. Folyamok 15. Közvetlen hozzáférésű állomány Programozási technológia (Java) - III. / 1 13. Állományok, bejegyzések 1. A java.io csomag 2. Útvonalak 3. A File osztály 4.

Részletesebben

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015 Objektumorientált programozás Pál László Sapientia EMTE, Csíkszereda, 2014/2015 Objektumorientált programozás - Pál László 12. ELŐADÁS Állomány-kezelés 2 Objektumorientált programozás - Pál László Mi a

Részletesebben

Java gyakorlat feladatai e s megolda sai (2014.04.10)

Java gyakorlat feladatai e s megolda sai (2014.04.10) Java gyakorlat feladatai e s megolda sai (2014.04.10) 1. Feladat Számítsuk ki a Fibonacci sorozat első 20 tagját! / Fibonacci számsorozat tagjait kiszámoló, egyetlen osztályból álló program @author Bence

Részletesebben

OOP: Java 8.Gy: Abstract osztályok, interfészek

OOP: Java 8.Gy: Abstract osztályok, interfészek OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus

Részletesebben

TCP/IP kapcsolat Java nyelven

TCP/IP kapcsolat Java nyelven Java programozási nyelv 2007-2008/ősz 5. óra TCP/IP kapcsolat Java nyelven Java streamek, szűrők, java.io TCP/IP alapú kommunikáció Egyszerű protokoll tervezése legradi.gabor@nik.bmf.hu szenasi.sandor@nik.bmf.hu

Részletesebben

Operációs rendszerek. UNIX fájlrendszer

Operációs rendszerek. UNIX fájlrendszer Operációs rendszerek UNIX fájlrendszer UNIX fájlrendszer Alapegység: a file, amelyet byte-folyamként kezel. Soros (szekvenciális) elérés. Transzparens (átlátszó) file-szerkezet. Link-ek (kapcsolatok) létrehozásának

Részletesebben

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:

Részletesebben

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2009/2010-2 félév, 2. gyakorlat 1 Osztályok és objektumok default, public, protected, private láthatóság a metódusokra és adattagokra (első

Részletesebben

JNDI - alapok. Java Naming and Directory Interface

JNDI - alapok. Java Naming and Directory Interface JNDI - alapok Java Naming and Directory Interface Naming Service Naming service: nevek hozzárendelése objektumokhoz, elérési lehetőség (objektumok/szolgáltatások lokalizálása), információk központosított

Részletesebben

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) közönséges felhasználók SQL*Plus Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP dolgozó), DEPT osztály) "közönséges" felhasználók Adatszótár: metaadatokat tartalmazó, csak olvasható táblák táblanév-prefixek:

Részletesebben

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció Serialization (in Java) Szerializáció Java Serialization API Standard eljárás az objektumok állapotának adatfolyamba történő kiírására (elmentésére egy bájtszekvenciába), és visszatöltésére Perzisztencia

Részletesebben

Példaprogramok Android alá (Lista, mentés, visszatöltés, pattogó android figura) Android alapok. Android játékfejlesztés.

Példaprogramok Android alá (Lista, mentés, visszatöltés, pattogó android figura) Android alapok. Android játékfejlesztés. Példaprogramok Android alá (Lista, mentés, visszatöltés, pattogó android figura) Android alapok Android játékfejlesztés Godinek László Tartalomjegyzék 1 Mentés... 1 1.1 A fájlmentésről röviden... 1 1.2

Részletesebben

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész Java Programozás 6. Gy: Java alapok Adatkezelő 2.rész 25/1 B ITv: MAN 2018.04.13 A feladat Feladat: folytassuk a panel életre keltését! - Alakítsuk ki a Lista panelt - Betöltéskor olvassuk be az adatokat

Részletesebben

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2010/2011-2 félév, 11. gyakorlat (az előző 2 gyak közül az egyiken ZH volt, a másik szünet miatt elmaradt) 1 JAR fájl készítés A JAR (Java

Részletesebben

Input Output Műveletek

Input Output Műveletek Input Output Műveletek Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Input Output Műveletek 2013 1 / 30 Tartalom jegyzék 1 I/O Osztályok File rendszer megvalósítás File rendszer módosítás,

Részletesebben

Java tutorial. Be- es kimenet kezelese. A legelsoprogram. Hogyan hasznaljunk fajlokat? Bemenet es kimenet absztrakciüja

Java tutorial. Be- es kimenet kezelese. A legelsoprogram. Hogyan hasznaljunk fajlokat? Bemenet es kimenet absztrakciüja Be- es kimenet kezelese A legelsoprogram Ü U dví zloszí veg kiıra sa a kepernyore public static void main( String args[] ){ System.out.println("Hello World!"); Hogyan hasznaljunk fajlokat? Ü Trivialis

Részletesebben

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni? A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály

Részletesebben

ANDROID ALKALMAZÁSFEJLESZTÉS

ANDROID ALKALMAZÁSFEJLESZTÉS ANDROID ALKALMAZÁSFEJLESZTÉS Adattárolás SharedPreference Belső - külső tároló PreferenceActivity Felhő alapú tárolás SQLite sicz.mj[tekercs]gmail.com Sicz-Mesziár János 2013. július 3. Shared Preference

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked

Részletesebben

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN OOP: Java 11.Gy: Enumok, beágyazott osztályok 13/1 B ITv: MAN 2019.04.24 ArrayList Rugalmas tömb A tömbök korlátai Fix méret, nem lehet menet közben megnövelni Ha túl nagyra választjuk, fölösleges helyfoglalás

Részletesebben

Fájlok, stream-ek. Fájlok és könyvtárak Stream-ek csoportosítása A stream-ek osztályhierarchiája Stream-ek használata

Fájlok, stream-ek. Fájlok és könyvtárak Stream-ek csoportosítása A stream-ek osztályhierarchiája Stream-ek használata Vizuális és eseményvezérelt programozás 2006 2007, II. félév BMF NIK Fájlok, stream-ek Fájlok és könyvtárak Stream-ek csoportosítása A stream-ek osztályhierarchiája Stream-ek használata Nagy Tibor BMF

Részletesebben

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS 2015-2016 Fájlkezelés PHP-ben Fájlok és könyvtárak kezelése 2 A PHP a Javascript-hez hasonlóan, nem képes a felhasználó merevlemezén

Részletesebben

Ja J v a a v a há h l á óz ó a z t a i al a ka k l a maz ma á z s á o s k o Socket, URL

Ja J v a a v a há h l á óz ó a z t a i al a ka k l a maz ma á z s á o s k o Socket, URL Java hálózati alkalmazások Socket, URL Protokollok java.net: socket, URL (Uniform Resource Locators) Protokoll: számítógépek közötti kommunikáció szabályai Internet TCP/IP (Transport Control Protocol/Internet

Részletesebben

ELTE SAP Excellence Center Oktatóanyag 1

ELTE SAP Excellence Center Oktatóanyag 1 Oktatóanyag 1 A dataset egy az alkalmazás-szerveren megtalálható illetve ott létrejövő szekvenciális fájl. Szerveroldali fájlkezelésre használják az SAP-ban. Megjegyzés: Amennyiben kliens oldalon található

Részletesebben

Java Programozás 7. Gy: Java alapok. Adatkezelő 3.rész

Java Programozás 7. Gy: Java alapok. Adatkezelő 3.rész Java Programozás 7. Gy: Java alapok Adatkezelő 3.rész 39/1 B ITv: MAN 2018.04.11 A feladat Feladat: folytassuk a panel életre keltését! - Alakítsuk ki az Új dolgozó felvitele panelt - A panel a Beszúr

Részletesebben

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer 1 Fájl rendszer Terminológia Fájl és könyvtár (mappa) koncepció Elérési módok Fájlattribútumok Fájlműveletek ----------------------------------------- Könyvtár szerkezet -----------------------------------------

Részletesebben

7. K: JAVA alapok Konzultáció

7. K: JAVA alapok Konzultáció Objektum Orientált Programozás 7. K: JAVA alapok Konzultáció 35/1B IT MAN B IT v: 2017.05.03 MAN Hiba, biztonságos program 01. Szintaktikai hiba imt i = 0; system.out.println( alma ); for (int i = 0, i

Részletesebben

Programozás I. 8. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás I. 8. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Programozás I. 8. gyakorlat 1 StringTokenizer osztály Stringeket darabolhatunk fel vele részekre Alapértelmezetten 5 esetben darabol: Szóköz Tab Újsor karakter Carriage return (kocsi vissza) karakter Line

Részletesebben

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++ Dinamikus adatszerkezetek 2D generikus tömb: C++ template class CArray2D protected: TYPE **m_array; long m_row, m_col; public: CArray2D(long row, long col) // konstruktor m_array = new TYPE*[row];

Részletesebben

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++ 2D tömb: Java versus C++ 2D tömb: Java.

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++ 2D tömb: Java versus C++ 2D tömb: Java. 2D generikus tömb: C++ Dinamikus adatszerkezetek template class CArray2D protected: TYPE **m_array; long m_row, m_col; public: CArray2D(long row, long col) // konstruktor m_array = new TYPE*[row];

Részletesebben

OOP: Java 4.Gy: Java osztályok

OOP: Java 4.Gy: Java osztályok OOP: Java 4.Gy: Java osztályok. 36/1 B ITv: MAN 2019.03.02 Feladat Készítsen el egy Employee osztályt és egy Employee osztályt használó osztályt (EmpProgram). Az Employee osztálynak: van name és salary

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java 2. gyakorlat Függvények Általános prototípus Módosítószavak Láthatóság: public, protected, private. Ha nem definiált, akkor úgynevezett package-private láthatóság. Lehet abstract

Részletesebben

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Java Programozás 1. Gy: Java alapok. Ismétlés ++ Java Programozás 1. Gy: Java alapok Ismétlés ++ 24/1 B ITv: MAN 2018.02.18 Feladat Készítsünk egy komplett konzolos alkalmazást, mely generál egy számot 0 és 100 között (mindkét határt beleértve), feladatunk

Részletesebben

Az állományok kezelésére használt fontosabb parancsok

Az állományok kezelésére használt fontosabb parancsok Függelék a 3 fejezethez Az állományok kezelésére használt fontosabb parancsok Tartalom Az ls parancs1 A mkdir parancs2 Az rmdir parancs2 A cp parancs3 A rm parancs4 Az mv parancs4 Az állományok kezeléséhez

Részletesebben

Debreceni Egyetem Informatika Kar. Mobiltelefon programozás és mobil adatbázis-kezelés

Debreceni Egyetem Informatika Kar. Mobiltelefon programozás és mobil adatbázis-kezelés Debreceni Egyetem Informatika Kar Mobiltelefon programozás és mobil adatbázis-kezelés Témavezető: Dr. Fazekas Gábor egyetemi docens Készítette: Toldi Gábor informatika tanár Debrecen 2008 Tartalomjegyzék

Részletesebben

OOP: Java 8.Gy: Gyakorlás

OOP: Java 8.Gy: Gyakorlás OOP: Java 8.Gy: Gyakorlás 43/1 B ITv: MAN 2019.04.10 43/2 Egy régebbi beszámoló anyaga 1. Feladat: Készítsen egy Szemely nevű osztályt a szokásos konvenciók betartásával, amely tárolja egy ember nevét

Részletesebben

Java programozási nyelv 5. rész Osztályok III.

Java programozási nyelv 5. rész Osztályok III. Java programozási nyelv 5. rész Osztályok III. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/20 Tartalomjegyzék

Részletesebben

Java Programozás 11. Ea: MVC modell

Java Programozás 11. Ea: MVC modell Java Programozás 11. Ea: MVC modell 20/1 B ITv: MAN 2018.03.02 MVC Model-View-Controller A modell-nézet-vezérlő a szoftvertervezésben használatos szerkezeti minta. Az MVC célja elválasztani az üzleti logikát

Részletesebben

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19 PHP II. WEB technológiák Tóth Zsolt Miskolci Egyetem 2014 Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19 Tartalomjegyzék Objektum Orientált Programozás 1 Objektum Orientált Programozás Öröklődés 2 Fájlkezelés

Részletesebben

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2009/2010-2 félév, 12. gyakorlat 1 Távoli metódushívás Java-ban (RMI) Java-ban a távoli metódushívás ( Remote Method Invocation, RMI) egy

Részletesebben

Bánsághi Anna 2014 Bánsághi Anna 1 of 35

Bánsághi Anna 2014 Bánsághi Anna 1 of 35 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 4. ELŐADÁS - ADATFOLYAMOK KEZELÉSE 2014 Bánsághi Anna 1 of 35 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

Munka állományokkal. mv: áthelyezés (átnevezés) rm: törlés. rmdir: üres könyvtár törlése. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

Munka állományokkal. mv: áthelyezés (átnevezés) rm: törlés. rmdir: üres könyvtár törlése. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár) man!!! Man Munka állományokkal cd :az aktuális könyvtár (.) beállítása (alapesetben a ~ könyvtárra) pwd: aktuális könyvtár kiiratása mkdir: új könyvtár létreh cp: másolás -r, -R: rekurzív (könyvtár) mv:

Részletesebben

Bevezető. Servlet alapgondolatok

Bevezető. Servlet alapgondolatok A Java servlet technológia Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2008. 03. 06. Servlet Bevezető Igény a dinamikus WEB tartalmakra Előzmény: CGI Sokáig

Részletesebben

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error Generics Egyszerűbb példák (java.util csomagból): public interface List { void add(e x); Iterator iterator(); public interface Iterator { E next(); boolean hasnext(); E - formális típusparaméter,

Részletesebben

XML adatkezelés I. Az SAX szabvány. Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék. XML adatok kezelési lehetőségei

XML adatkezelés I. Az SAX szabvány. Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék. XML adatok kezelési lehetőségei XML adatkezelés I. Az szabvány Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék XML adatok kezelési lehetőségei szövegszerkesztő API XML DOM API XSL XQUERY Az XML dokumentumok feldolgozó

Részletesebben

Kivételkezelés, naplózás. Exception handling, logging

Kivételkezelés, naplózás. Exception handling, logging Kivételkezelés, naplózás Exception handling, logging Try-catch try { // Kódrészlet, amely kivételt eredményezhet catch (Exception1 object1 ) { // Az Exception1 kivétel kezelésének megfelelő kód catch (Exception2

Részletesebben

Programozás II. 2. Dr. Iványi Péter

Programozás II. 2. Dr. Iványi Péter Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c

Részletesebben

OOP #14 (referencia-elv)

OOP #14 (referencia-elv) OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet

Részletesebben

Java Programozás 3. Gy: Java GUI. Swing, AWT

Java Programozás 3. Gy: Java GUI. Swing, AWT Java Programozás 3. Gy: Java GUI Swing, AWT 35/1 B ITv: MAN 2018.02.25 Feladat Készítsük el az Emp osztály kezelő programját úgy, hogy ArrayList-et (listatömb, tömblista, rugalmas tömb) használunk. A java.util.arraylist

Részletesebben

és az instanceof operátor

és az instanceof operátor Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Operációs rendszerek 1.

Operációs rendszerek 1. Operációs rendszerek 1. Fájlkezelés Balla Tibor balla.tibor@inf.unideb.hu Fájlrendszer: Könyvtárak és Fájlok Inode szuperblokk inode tábla tényleges lemezterület inode = index-node Az inode tábla egy fix

Részletesebben

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

LINUX PMB2506-2 LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB

LINUX PMB2506-2 LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB LINUX PMB2506-2 LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB LINUX PARANCSOK ÉS HASZNÁLATUK ls: listázás -l részletes lista -a rejtett fájlok megjelenítése cp: fájlok másolása -i Már létező cél felülírása előtt

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelők Kivételkezelés Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát

Részletesebben

Osztályok. 4. gyakorlat

Osztályok. 4. gyakorlat Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum

Részletesebben

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread Végrehajtási szálak Runnable, Thread Végrehajtási szálak Java-ban A Java program az operációs rendszer egy folyamatán (process) belül fut. A folyamat adat és kód szegmensekből áll, amelyek egy virtuális

Részletesebben

BASH script programozás II. Vezérlési szerkezetek

BASH script programozás II. Vezérlési szerkezetek 06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van

Részletesebben

Informatika terméktervezőknek

Informatika terméktervezőknek Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások

Részletesebben

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport 10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)

Részletesebben

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor Java Programozás 4. Gy: Java GUI Tipper, MVC kalkulátor 15/1 B ITv: MAN 2018.03.10 1. Feladat: Tipper Készítsük el a tippelős programunk grafikus változatát. Az üzleti logika kódja megvan, a felület pedig

Részletesebben

Programozási technológia 2.

Programozási technológia 2. Programozási technológia 2. Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. PacMan Készítsünk egy szellem mentes két személyes PacMan játékot Ha a játékosok PacMan-jei mindent megettek, a játék újraindul

Részletesebben

Debreceni Egyetem Matematikai és Informatikai Intézet. 13. Védelem

Debreceni Egyetem Matematikai és Informatikai Intézet. 13. Védelem 13. Védelem A védelem célja Védelmi tartományok Hozzáférési mátrixok (access matrix, AM) A hozzáférési mátrixok implementációja A hozzáférési jogok visszavonása Képesség-alapú rendszerek Nyelvbe ágyazott

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

Java programozási nyelv 6. rész Java a gyakorlatban

Java programozási nyelv 6. rész Java a gyakorlatban Java programozási nyelv 6. rész Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. október A Java programozási nyelv Soós Sándor 1/16 Tartalomjegyzék

Részletesebben

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozási nyelvek II. JAVA EA+GY 1. gyakolat Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről

Részletesebben

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*; Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely

Részletesebben

Bevezetés az informatikába, második gyakorlat. Bevezetés Környezetváltozók és néhány egyszerű utasítás Jogosultságok Fájlkezelés

Bevezetés az informatikába, második gyakorlat. Bevezetés Környezetváltozók és néhány egyszerű utasítás Jogosultságok Fájlkezelés Bevezetés az informatikába, második gyakorlat Bevezetés Környezetváltozók és néhány egyszerű utasítás Jogosultságok Fájlkezelés Bevezetés Parancsértelmező (bash) Utasítások man Szövegszerkesztők Bash Különféle

Részletesebben

Programozás I. Második ZH segédlet

Programozás I. Második ZH segédlet Programozás I. Második ZH segédlet Ezen az oldalon: interfész létrehozás, megvalósítás; absztrakt osztály, metódus; belső osztály Interfész létrehozása: public interface InterfeszNeve { //Metódusok deklarációja

Részletesebben

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető

Részletesebben

Programozás I. Második ZH segédlet

Programozás I. Második ZH segédlet Programozás I. Második ZH segédlet Ezen az oldalon: interfész létrehozás, megvalósítás; absztrakt osztály, metódus; belső osztály Interfész létrehozása: public interface InterfeszNeve { //Metódusok deklarációja

Részletesebben

Java programozási nyelv 4. rész Osztályok II.

Java programozási nyelv 4. rész Osztályok II. Java programozási nyelv 4. rész Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/17 Tartalomjegyzék

Részletesebben

PowerShell v2.0 alapok. Nagy Miklós

PowerShell v2.0 alapok. Nagy Miklós PowerShell v2.0 alapok Nagy Miklós Kezdetek, Felhasználás 2006-ban létrejött egy új script nyelv, mely Window Vista-ban, és Windows Server 2008-ban telepíthető opcióként jelenik meg. (PowerShell 1.0) Automatizáció

Részletesebben

A WEB programozása - JSP1 dr.gál Tibor. 2010. őszi félév

A WEB programozása - JSP1 dr.gál Tibor. 2010. őszi félév Általános jellemzők JavaServer Pages (JSP) Java utasításokat helyezetünk el a HTML lapon Ezket a Java utasításokat a kiszolgáló végrehajtja Az ügyfél felé generált tartalom: statikus HTML kód + Java utasítások

Részletesebben

Hálózati operációs rendszerek II. OES biztonsági rendszere

Hálózati operációs rendszerek II. OES biztonsági rendszere Hálózati operációs rendszerek II. OES biztonsági rendszere OES biztonsági rendszere Többszintű rendszer Bejelentkezés Fájlrendszer edirectory Public Key Infrastructure (PKI) Szerver konzol Autentikáció

Részletesebben

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title; PHP5 objektumok 1 Osztályok class, new book.php: construct () destruct() $b=new Book(); törlés: $b=null; vagy unset ($b); -elnevezési konvenciók private $isbn; public $title; function

Részletesebben

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real

Részletesebben

Operációs rendszerek gyak.

Operációs rendszerek gyak. Operációs rendszerek gyak. Linux alapok III., Bash Cirok Dávid Hirling Dominik Szegedi Tudományegyetem Cirok.David@stud.u-szeged.hu Hirling.Dominik@stud.u-szeged.hu Linux alapok III., Bash 1 Linkelés 2

Részletesebben

Operációs rendszerek. UNIX/Linux fájlrendszerek

Operációs rendszerek. UNIX/Linux fájlrendszerek Operációs rendszerek UNIX/Linux fájlrendszerek Tartalom Linux fájlrendszerek UNIX/Linux fájlrendszerek Szimbolikus linkek Fájlrendszerek csatolása Virtuális fájlrendszer Szuperblokk Inode Objektumok 2

Részletesebben

JAVA PROGRAMOZÁS 8.ELŐADÁS

JAVA PROGRAMOZÁS 8.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 8.ELŐADÁS 2014-2015 tavasz Véletlen elérésű állományok; JDBC 2 Véletlen elérésű állományok A RandomAccessFile osztály 3 Közvetlen hozzáférésű

Részletesebben

A legfontosabb DOS parancsok

A legfontosabb DOS parancsok A legfontosabb DOS parancsok A DOS parancsok általános formája: KULCSSZÓ paraméterek Az utasítások akár kis-, akár nagybetűkkel is írhatók, a DOS nem tesz köztük különbséget. A kulcsszó és az első paraméter

Részletesebben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:

Részletesebben

BME MOGI Gépészeti informatika 4.

BME MOGI Gépészeti informatika 4. BME MOGI Gépészeti informatika 4. 1. feladat önálló feladatmegoldás Generáljon két 1 és 10 közötti véletlen egész számot, majd kiírja ezekre a számokra a tízes szorzótáblákat! Ha az első generált szám

Részletesebben

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok SQL jogosultság-kezelés Privilégiumok Grant és Revoke Grant Diagrammok 1 Jogosultság-kezelés Egy fájlrendszer általában jogosultságokat rendel az általa kezelt objektumokhoz. Tipikusan olvasható, írható,

Részletesebben

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL ) Célok: a Java DB adatbázis-kezelő rendszer használatának ismertetése, adatbázisok használata Java alkalmazásokban - kétrétegű architektúra, egyszerű kliens-szerver architektúra használata hálózati alkalmazásokhoz.

Részletesebben