C12 – LPO: Operatii de Intrare/iEsire cu fisiere

Slides:



Advertisements
Similar presentations
Chapter - 12 File and Streams (continued) This chapter includes -  DataOutputStream  DataInputStream  Object Serialization  Serializing Objects 
Advertisements

Geoff Holmes Overview IO Zoo Stream I/O File I/O Buffering Random-Access Text Streams Examples Serialization Java IO – programs that start with import.
1 Text File I/O  I/O streams  Opening a text file for reading  Closing a stream  Reading a text file  Writing and appending to a text file.
Batalia sexelor O lume dominata de barbati vs o lume dominata de femei.
1 Text File I/O Overview l I/O streams l Opening a text file for reading l Reading a text file l Closing a stream l Reading numbers from a text file l.
1 Streams Overview l I/O streams l Opening a text file for reading l Reading a text file l Closing a stream l Reading numbers from a text file l Writing.
Java Review 2. The Agenda The following topics were highlighted to me as issues: –File IO (Rem) –Wrappers (Rem) –Interfaces (Rem) –Asymptotic Notation.
COMP201 Java Programming Topic 6: Streams and Files Reading: Chapter 12.
פיתוח מונחה עצמים – שפת JAVA קבצים. References קורס "שיטות בהנדסת תוכנה", הפקולטה למדעי המחשב, הטכניון. קורס "מערכות מידע מבוזרות", הפקולטה להנדסת תעשייה.
Java File I/O (Continued). File I/O in Java Like every other programming language, Java supports the writing to and reading from different files with.
Two Ways to Store Data in a File Text format Binary format.
5-Oct-15 Air Force Institute of Technology Electrical and Computer Engineering Object-Oriented Programming Design Topic : Streams and Files Maj Joel Young.
Working with files By the end of this lecture you should be able to: explain the principles of input and output and identify a number of different input.
Input and Output F Stream Classes F Processing External Files F Data Streams F Print Streams F Buffered Streams F Text Input and Output on the Console.
Based on OOP with Java, by David J. Barnes Input-Output1 The java.io Package 4 Text files Reader and Writer classes 4 Byte stream files InputStream, FileInputStream,
Two Ways to Store Data in a File  Text format  Binary format.
CIS 270—App Dev II Big Java Chapter 19 Files and Streams.
CS101 Lab “File input/Output”. File input, output File : binary file, text file READ/WRITE class of “text file” - File Reading class : FileReader, BufferedReader.
Files and Streams CS /02/05 L7: Files Slide 2 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved.
1 Software 1 Java I/O. 2 The java.io package The java.io package provides: Classes for reading input Classes for writing output Classes for manipulating.
CSI 3125, Preliminaries, page 1 Java I/O. CSI 3125, Preliminaries, page 2 Java I/O Java I/O (Input and Output) is used to process the input and produce.
Java Input/Output. Java Input/output Input is any information that is needed by your program to complete its execution. Output is any information that.
Files and Serialization. Files Used to transfer data to and from secondary storage.
CSI 3125, Preliminaries, page 1 Files. CSI 3125, Preliminaries, page 2 Reading and Writing Files Java provides a number of classes and methods that allow.
1 Putting Streams to use. 2 Stream Zoo C++ gives you istream, ostream, iostream, ifstream, ofstream, fstream, wistream, wifstream, istrsteam… (18) Java.
Keerthi Nelaturu Url: site.uottawa.ca/~knela006
Lecture 8: I/O Streams types of I/O streams Chaining Streams
C3 – LPO: I/E, tablou, sir CUPRINS Citirea datelor in mod
Strings and File I/O.
Accessing Files in Java
Oracle Academy Lead Adjunct
Funcţii Excel definite de utilizator (FDU) în VBA
Instrumente CASE Curs nr. 7.
Căutarea şi regăsirea informaţiei.
SOFTWARE Tipuri de software.
PASII INSTALARII SISTEMULUI DE OPERARE
Dispozitive de stocare
תרגול מס' 5: IO (קלט-פלט) זרמי קלט וזרמי פלט ((Input & Output Streams,
Arhitectura serviciilor web
Programming in Java Files and I/O Streams
Căutarea şi regăsirea informaţiei.
Java – Fisiere Operatii de intrare/iesire cu fisiere si date stocate:
Gestionarea datelor stiintifice
Објектно орјентисано програмирање
Structura bazei de date MS Access
C14 – LPO: Client - Server CUPRINS Reţele de calculatoare:
Software product management
CONVERSII INTRE SISTEME DE NUMERATIE
WebSite Social Tema 2 WebSite Social.
SUBNETAREA.
Curs 6: Introducere în programarea SAS
Aplicatii client-server
תרגול מס' 5: IO (קלט-פלט) זרמי קלט וזרמי פלט ((Input & Output Streams,
Formatarea paragrafului
Comp 212: Intermediate Programming Lecture 30 – Stream and File I/O
Forms (Formulare).
A great way to create a channel of communication
Broker in practica: Middleware
Folosirea de către companii a Twitter, Facebook şi LinkedIn
Programarea in limbajul Java 2004 Lecturer: Gavrila Cristian
Realizarea prezentarilor cu Microsoft PowerPoint
Implementarea listelor simplu inlantuite
Administrare Oracle 9i Suport de curs
Files and Streams in Java
Web Design & Development Lecture 8
Java Basics Introduction to Streams.
Java IO Packages Prepared by Mrs.S.Amudha AP/SWE
Podcast Ch23c Title: Binary Files
Comp 212: Intermediate Programming Lecture 30 – Stream and File I/O
David Davenport Spring 2005
Presentation transcript:

C12 – LPO: Operatii de Intrare/iEsire cu fisiere CUPRINS Fisiere Fluxuri pe octet pe caracter Serializare Tokenizer (analiza lexicala)

Obiective După parcurgerea acestui curs ar trebuie sa puteţi: înţelege principiile de lucru fisiere si fluxuri in Java; manipula date date prin fluxuri pe caracter si octer; serializa obiecte prin fluxuri; realiza analiza lexicala a datelor stocate in fisiere.

Fisiere Java fişierul este o structura de date ce asigura pastrarea permanenta (persistenta) datelor; datele sunt stocate utilizând doua formate: text (caracter) : ‘a’ ‘b’ ‘1’ ‘2’ …. binar (octeti): 0 12 48 63 … în Java fişierele sunt fluxuri de caractere sau de octeti fluxul este abstractizarea pentru orice se poate citi sau scrie; clasele de fluxuri (Stream) se folosesc la manipularea de octeti, clasele Reader si Writer citesc si scriu caractere.

Fluxuri operatiile de intrare/ieşire pe fluxuri au la baza patru clase abstracte: InputStream, OutputStream, Reader şi Writer; pe baza acestora se creeaza mai multe clase concrete, de aplicatiile opereaza cu clase concrete, cele abstracte definesc functonalitatea comuna tuturor claselor din acea categorie; InputStream şi OutputStream se folosesc în cazul fluxurilor de octeti, iar Reader şi Writer se folosesc în cazul fluxurilor de caractere; fluxurile pe caracter se folosesc în cazul caracterelor şi a şirurilor de caractere, iar cele pe octet în cazul octetilor sau a obiectelor binare.

Fisiere externe si directori un obiect din clasa File se foloseste pentru manipularea de fisiere si directori (la nivelul sistemului de operare); crearea unui fisier extern si director se fac prin: stergerea unui fisier sau director (se poate sterge doar daca e vid): redenumirea unui fisier sau director: alte metode: f.getName(): f.getPath(): f.isFile() sau f.isDirectory() f.canRead() sau f.canWrite(): File f = new File(“nume.txt”); f.createNewFile(); File d = new File(“dir1); d.mkdir(); f.delete(); f.renameTo();

Clase de fluxuri pe octet

FileInputStream si FileOutputStream FileInputStream creeaza un InputStream ce se poate folosi pentru citirea de octeti din fisier; FileOutputStream creeaza un OutputSteam ce se poate folosi pentru scrierea de octeti in fisier; import java.io.*; public class ByteStreamIO { public static void main(String[] args) { int nroct = 0; int iout = 2807; byte[] bout = new byte[2]; try { FileOutputStream scriebin = new FileOutputStream("out.bin"); //transformat int-ul in byte-uri bout[0] = (byte)(iout / 256); //10 bout[1] = (byte)(iout % 256); //247 scriebin.write(bout); scriebin.close(); FileInputStream citestebin = new FileInputStream("out.bin"); nroct = citestebin.available(); System.out.println(nroct + " octeti."); if (nroct > 0) {

FileInputStream si FileOutputStream for (int i = 0; i < nroct; i++) System.out.println(citestebin.read()); /* se poate si asa desi numarul * de octeti se cunoaste while ((bin = (byte)citestebin.read()) != -1) System.out.println((int) bin); */ } citestebin.close(); } catch (FileNotFoundException n) { System.err.println("Nu pot lucra cu fiserul!"); } catch (IOException e) { System.err.println("Eroarea de I/E: " + e);

Clase de fluxuri pe caractere

FileReader si FileWriter FileWriter creeaza un Writer ce se poate folosi pentru scrierea de caractere in fisier; FileReader creeaza un Reader ce se poate folosi pentru citirea de caratere din fisier; import java.io.*; public class CharStreamIO { public static void main(String[] args) { String s = "2807"; int nroct = 0, in; try { FileWriter scrietxt = new FileWriter("out.txt"); for(int i=0; i<s.length();++i) scrietxt.write(s.charAt(i)); /* se poate scrie direct tot sirul cu: scrietxt.write(s); */ scrietxt.flush(); // inainte de close nu e necesar scrietxt.close(); FileReader citestetxt = new FileReader("out.txt");

FileReader si FileWriter while ((in = citestetxt.read()) != -1) { System.out.println((char)in); nroct++; } citestetxt.close(); } catch (IOException e) { System.out.println("Eroarea de I/E: " + e);

Serializare fluxurile de obiecte permit operatii de intrare si iesire la nivel de obiect; pentru ca un obiect sa poata fi scris sau citit, clasa ce defineste obiectul trebuie sa implementeze interfata java.io.Serializable (sau java.io.Externalizable); interfata Serializable are rol de marcare, nu are metode, deci nu se scrie cod aditional in clasa ce implementeaza Serializable; implementarea interfetei premite ca mecanismul de serializare Java sa automatizeze procesul de stocare al obiectelor sau tablourilor.

Interfata Serializable import java.io.Serializable; public class Punct implements Serializable{ //Campuri private double x; private double y; private double distanta; //Constructori Punct() { setX(0); setY(0); distanta = 0; } Punct(double x, double y) { setX(x); setY(y); actualizareDistanta(); // Metode public void setX(double x) { this.x = x; public void setY(double y) { this.y = y; public double x() { return x; } public double y() { return y; public double distantaOrigine() { return distanta; private void actualizareDistanta() { distanta = Math.sqrt(x*x+y*y); public String toString() { return "<" + x + "," + y + ">";

Interfata Serializable import java.io.*; public class TestSerializare { public static void main(String[] args) { Punct p1 = new Punct(1,1); Punct[] puncte = new Punct[3]; puncte[0]=p1; puncte[1]= new Punct(2,2); puncte[2]= new Punct(3,3); ObjectOutputStream out; ObjectInputStream in; try { out = new ObjectOutputStream(new FileOutputStream("obiecte.dat")); out.writeObject(puncte); out.close(); in = new ObjectInputStream(new FileInputStream("obiecte.dat")); Punct [] punctecitie = (Punct []) in.readObject(); in.close(); for (Punct p: punctecitie) System.out.println(p); } catch (Exception e) { e.printStackTrace(); } }

Stream si String Tokenizer SteamTokenizer formeaza atomi lexicali de pe InputStream delimitati prin anumite multimi de caractere, lucreaza similar cu StringTokenizer. import java.io.*; import java.util.StringTokenizer; public class LineTokenStreamIO { public static void main(String[] args) { int l = 0; String linie = null; PrintWriter fout = null; BufferedReader fin = null; String s; int x; double y1, y2; try { fout = new PrintWriter(new FileWriter("linefile.txt")); //scrierea datelor in fisier, separatorul este "," for (int i = 0; i < 5; ++i) fout.println("Linia " + (i + 1) + "," + i + "," + Math.sin(i) + "," + Math.cos(i)); fout.close(); fin = new BufferedReader(new FileReader("linefile.txt")); while ((linie = fin.readLine()) != null) { System.out.println("S-a citit linia: "+linie);

//extragerea simbolurilor pe baza separatorului , StringTokenizer t = new StringTokenizer(linie,","); s = t.nextToken(); x = Integer.parseInt(t.nextToken()); y1 = Double.parseDouble(t.nextToken()); y2 = Double.parseDouble(t.nextToken()); System.out.println(s+x+y1+y2); ++l; } System.out.println("S-au citit si prelucrat" + l + " linii"); fin.close(); } catch (IOException e) {

Intrebari Ce este persistenta datelor, cum se ajunge la aceasta prin fisiere? Cate clase abstracte pentru lucrul cu fluxuri sunt in Java si cand se folosesc acestea? Cu ce clasa se manipuleaza sistemul de fisiere (al sistemului de operare), ce operatii sunt posibile? Ce presupune procesul de serializare al unei clase si ce effort de implementare necesita? Ce este o clasa Tokenizer?

Bibliografie http://www.oracle.com/technetwork/java/javase/documentation/index.html http://docs.oracle.com/javase/6/docs/ Ştefan Tanasă, Cristian Olaru, Ştefan Andrei, Java de la 0 la expert, Polirom, 2003, ISBN: 973-681-201-4. Herber Schild, Java 2 - The Complete Reference, Fourth Edition, Osborne, 2001, ISBN: 0-07-213084-9. Deitel H.M., Deitel P. J., Java - How to programm, Fith Edition, Prentice Hall, 2003, ISBN: 0-13-120236-7. http://www.east.utcluj.ro/mb/mep/antal/downloads.html