ITK:P2 F8 Strömmar och filhantering DSV Peter Mozelius.

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

INTRODUKTION TILL PROGRAMMERING
Repetition av språket Java
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
2I1073 Föreläsning 3 Säkerhet, filhantering och XML
Imperativ Programmering
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 6
Klassarv och inkapsling
Filhantering Grundprincipen för filhantering Öppna filen
Metoder i java Det finns två typer av metoder i java
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Att programmera i språket Java
1 ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering DSV Peter Mozelius.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
1 ITK:P1 Föreläsning 6 Layoutmodeller i Java DSV Marie Olsson.
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
Streams and File I/O Kapitel 10. Agenda Exceptions Textfiler Skriva Appenda Läsa File Sökvägar.
1 ITK:P1 Föreläsning 5 Iteration, slumpning och arrayer DSV Peter Mozelius.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Repetition inför slutprovet
Datasamlingar och generiska enheter
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
Objektorienterad Modellering Programmering och Analys
Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar.
OOP Objekt-orienterad programmering
Programmeringsteknik för Media1 & K1
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Föreläsning 14 ”Enkel” Filhantering.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
1 ITK:P1 Föreläsning 8 Multimedia för spelkonstruktion DSV Peter Mozelius.
Föreläsning 10 Stränghantering.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 C# I/O Streams C# använder “strömmar” för in- och utmatningsoperationer.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
0. Kod, Klassdiagram och Sekvensdiagram import java.awt.event.*; import javax.swing.*; import java.awt.*; public class TwoThreads implements ActionListener.
INTRODUKTION TILL PROGRAMMERING
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
TILLÄMPAD DATALOGI (TILDA) Övning 2
Programmeringsteknik för K och Media
Föreläsning 9 Inläsning och utskrift på fil –SimpleTextFileReader –SimpleTextFileWriter Felsökning Java API.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 8: Exempel och problemlösning
Nätverkskommunikation
Presentationens avskrift:

ITK:P2 F8 Strömmar och filhantering DSV Peter Mozelius

I/O  I/O = Input /Output  Input = inmatning till en process från en fil, ett tangentbord eller från en annan process  Output = utmatning från en process till en fil, en skärm, en skrivare, eller till en annan process

Strömmar  Oavsett typ av I/O så sker den i Java med hjälp av strömmar  En ström i Java är: Ett flöde av data (binär eller som text) Ett objekt som hämtar data från en källa – inström Ett objekt som levererar data till en destination – utström Poängen är att data behandlas lika oavsett vad som är källa eller destination

Strömmar  För att få tillgång till olika typer av strömmar i Java: import java.io.*;  En djungel av strömtyper byte-strömmar char-strömmar

Byte-strömmar o Dataflödet sker i form av bytes o Har funnits i Java sedan JDK 1.0 o Den inbyggda datatypen byte o 1 byte = 8 bitar Alla klasser i Java som hanterar byte- strömmar har ett klassnamn där ordet Stream ingår

Char-strömmar o Dataflödet sker i form av char o Har funnits i Java sedan JDK 1.1 o Den inbyggda datatypen char o 1 char = 16 bitar Alla klasser i Java som hanterar char- strömmar har ett klassnamn där ordet Reader eller Writer ingår

Två olika filtyper  Alla filer lagras som 1:or och 0:or  Binärfiler Läses just som en rad 1:or och 0:or Effektiv läsning för olika program  Textfiler Läses som en rad av tecken Trevlig läsning för oss människor

Utström till fil 1  Öppna en 8-bitars byte-ström FileOutputStream fout = new FileOutputStream(”minfil.txt”);  Buffrad utmatning genom BufferedOutputStream bout = new BufferedOutputStream(fout);

The Decorator Design Pattern  Ett av många designmönster  Ett enkelt designmönster där koden från förra bilden kan skrivas om enligt: BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(”minfil.txt”));

The Decorator Design Pattern  En FileOutputStream kan dekoreras för kryptering enligt: ObjectOutputStream ous = new ObjectOutputStream( new CipherOutputStream( new FileOutputStream(fil), cipher)); Poängen är att klasser inom samma familj kan kedjas ihop dynamiskt och ytterligare klasser inte behövs

Utström till fil 2  Öppna en 16-bitars char-ström till en textfil och skriv med metoden println() lika enkelt som på P1 med System.out.println(); PrintWriter pw = new PrintWriter( new FileOutputStream(”minfil.txt”)); OCH SEDAN pw.print(); ELLER pw.println();

PrintWriter  Klassen PrintWriter Innehåller metoderna  print()  println() Skriver ut med 16 bitar  Vi ska titta på ett kodexempel MEN först 15 min PAUS!

Att skriva till fil, exempel1 import java.io.*; public class F8_exempel1 { public static void main(String[] args) { PrintWriter pout = null; try { pout = new PrintWriter(new FileOutputStream("min.fil")); }catch (FileNotFoundException fnfe) { System.err.println("Angiven fil kunde inte öppnas."); System.exit(0); }

Att skriva till fil, exempel1  Om filen min.fil redan finns och har ett innehåll så kommer innehållet att skrivas över  Ibland är detta precis vad man vill  Men ibland är det önskvärt att det tidigare innehållet ska finnas kvar

Att skriva till fil, exempel2 try{ pout = new PrintWriter(new FileOutputStream("min.fil", true)); } catch (FileNotFoundException fnfe) { System.err.println("Angiven fil kunde inte öppnas"); System.exit(0); } Det som skrivs läggs till sist i filen

Att skriva ut objekt  Att dela upp komplexa objekt i sina beståndsdelar och skriva ut del för del till en fil kan kräva mycket kod  I Java finns inbyggd serialisering  Om en klass bara implementerar interfacet Serializable  Så kan hela objektet istället skrivas ut på en gång med writeObject()

Att skriva ut objekt  Även en datasamling med ett antal objekt kan skrivas ut i sin helhet: ArrayList al = new ArrayList(); Lägg in en massa objekt; out.writeObject(al); Där out är en instans av klassen java.io.ObjectOutputStream

Att läsa in objekt  Att sedan läsa in de utskrivna objekten igen görs genom: ObjectInputStream oin = new ObjectInputStream( new FileInputStream(fil)); OCH sedan oin.readObject()

Klassen ObjectOutputStream  Klassen ObjectOutputstream har även en del andra instansmetoder för enklare utskrifter som t ex: public void writeBoolean(boolean b); public void writeChars(String str); public void writeFloat(float f); public void writeDouble(double d);

RandomAccessFile  Den filåtkomst vi hittills tittat på har varit sekventiell  För vissa tillämpningar är det bättre med direktåtkomst (random access)

RandomAccessFile RandomAccessFile raf = new RandomAccessFile(”lager.fil”, ”rw”); Skapar en direktaccessfil som det går att både läsa och skriva till Flytta sedan inom filen med raf.seek(); 15 min PAUS!

En meny för filinläsning  I program med grafiskt gränssnitt vill man ofta ha menyer i stil med

En meny för filinläsning  Menyval kan som i kursbokens kap 14 skapas enligt: public JMenuBar skapaArkivMeny() { filBar = new JMenuBar(); arkivMeny = new JMenu("Arkiv"); arkivMeny.setMnemonic('a'); filBar.add(arkivMeny);

En meny för filinläsning Menyerna behöver också lyssnas av MenuListener ml = new MenuListener(this, meddelandeRuta, infoRuta); mItem = arkivMeny.add( new JMenuItem("Öppna", 'ö')); mItem.addActionListener(ml); mItem = arkivMeny.add( new JMenuItem("Avsluta", 'a')); mItem.addActionListener(ml);

En meny för filinläsning Menylyssnaren är en egendefinierad klass som implementerar interfacet ActionListener class MenuListener implements ActionListener { med vår gamle vän public void actionPerformed( ActionEvent e) {

En dialog för att välja fil JFileChooser fc = new JfileChooser(); int val = fc.showOpenDialog(fönster);

Användarens filval  Att användaren verkligen har valt en fil och inte avbrutit dialogen kan kontrolleras genom: if(val == JFileChooser.APPROVE_OPTION)  Sedan inleds filinläsningen med: BufferedReader inFil = null; try {

Att läsa in vald fil inFil = new BufferedReader(new FileReader(jfc.getSelectedFile())); String rad; while((rad = inFil.readLine())!= null) meddelande += "\n" + rad; }catch(FileNotFoundException fnfe){… }catch (IOException e){…}

Ett egendefinierat filfilter  Det kan vara praktiskt att filtrera bort de filtyper som man INTE vill läsa in: private class InFilter extends javax.swing.filechooser.FileFilter { public boolean accept(File f) { if(f.getName().toLowerCase().endsWith(".fil")) return true; else return false; }...

Er inlämningsuppgift  Jobba nu på med: Tack för idag!