Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Tabeller av objekter Klassen ArrayList
14 okt. 2003, Arne Maus Inst. for informatikk, UiO
C++ for Java-programmerere
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Datafiler og serialisering Tekstfiler Scanner-klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering.
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12 Datalagring, Beans, 2D og Collections.
Filbehandling (Kapittel 8)
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Uke 8 - Mer om: Objekter, klasser og pekere
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Java 12 Mer filbehandling - skrive til fil HashMap Et større eksempel Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
Tabeller – Arrays Lage frekvenstabell Norske Bokstaver
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Java 14 Et eksempel fra bioinformatikk: analyse av biologiske sekvenser Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
Variasjoner i subklasser.  Prinsippskissen er meget enkel  En abstrakt klasse har en konkret metode og en abstrakt metode  Hver subklasse realiserer.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
IS-102 Klassedefinisjoner
Oblig4 - forklaringer Arne og Ole Christian.
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
C# for javaprogrammerere
En gang til!? .
Filer Finne minste Finne Største Beregne gjennomsnitt Variabler Tabeller – Arrays Lage frekvenstabell.
Feilhåndtering. Feil er uunngåelige! Erfaring viser at feil i dataprogrammer som består av mer enn noen få linjer ikke er til å unngå. For å få et godt.
Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse.
Web-applikasjoner Prosjekt3 Logging Gruppe 9 Malik Muhammad Naeem Kevan Qureshi.
Introduksjon til Java 5.0. Hva er nytt i 5.0? Generiske typer For-løkke med iterator (for-hver løkke) Automatisk innpakking av primitive typer Metadata.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering
Uke 7 - del I: Repetisjon del II: Objekter, klasser og pekere 30 sept. 2003, Arne Maus Inst. for informatikk, UiO.
Java 3 Mer om uttrykk Terminal I/O Forgreninger
Java 11 Programmering med og uten objekter: hva er forskjellen?
OOT Seminar H-97 CORBA Praktisk del. Valg av ORB implementasjon n Har valgt å bruke Visigenic sin ORB implementsjon n ORB’en er 100% Java kodet n Bygger.
Arv og polymorfi, del 3 Modifikatoren abstract side 2-3
Jæger: Robuste og sikre systemer INF150 Programmering mandag 18.9 Lesing av data fra fil og skriving av data til fil. Side 411 – 4.. Kap 4.
CORBA Noen hull som må fylles: ORB Object Adapters CORBA services IDL Factory Objects.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Föreläsning 13 Programmeringsteknik och Matlab 2D1312/2D1305 Inläsning från fil Skriva till fil StringTokenizer Sortering.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
INF Objektorientert programmering
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Inf1000 (Uke 10) HashMap og ArrayList
INF1000 (Uke 4) Mer om forgreninger, While-løkker
XML og JDOM Helge Furuseth XML  XML = Extensible Markup Language Basert på SGML – Standard Generalized Markup Language  HTML =
Inf1000 (Uke 5) Arrayer, filer og tekst
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
Kapittel 10 Exceptions Handtering av exceptions Ein exception er eit objekt som representerer ein feil eller eit unntak Exceptions blir kasta av.
Lokale variable Hvis vi trenger å ta vare på en verdi, inne i en metode kan vi definere en lokal variabel: int amount = 0; vi må fortelle hvilken type.
Variabler, datatyper og uttrykk
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike typer. 3.Kan kun skanne framover i teksten. Vis programliste 12.2 side 435.

Hva skjer når tall skrives til / leses fra en fil? Teksten ”25” består av tegnene ’2’ (kode 50 = ) og ’5’ (kode 53 = ). Teksten etterfølges av linjeskift, ikke vist her. skriver.println(tall); String s = leser.readLine() int tall2 = Integer.parseInt(s);int tall1 = 25; heltallet 25 på binær form i primær- minnet på disken

Tekstlig kontra binær overføring av data Tekstlig overføring av (tall-)data –Filen kan leses av mennesker. –Omformingen til / fra binær form tar tid. –Dersom desimaltall skal beholde nøyaktigheten må en double skrives til fil med 15 sifre. Binær overføring av (tall-)data –Dataene overføres direkte mellom primærminnet og datafilen. –Filen kan ikke leses av mennesker. –Ingen tid brukes til omforming mellom forskjellige representasjoner av tallet. –Dataene tar akkurat like stor plass på filen som i primærminnet. Interface for binær dataoverføring –DataInput –DataOutput

Direkte tilgang til innholdet i en fil Et objekt av klassen RandomAccessFile knyttes til en fil som kan åpnes for både lesing og skriving. Vi kan flytte oss framover og bakover i filen ved å posisjonere filpekeren et antall byte framover eller bakover. Klassen RandomAccessFile implementerer interfacene for binær dataoverføring. Konstruktør: –RandomAccessFile(String filnavn, String modus) modus = ”r” eller ”rw” –Metoder - alle kan kaste IOException: long getFilePointer(), void seek(long pos), long length() void close() char readChar(), int readInt(), double readDouble() void writeChar(int tegn), void writeInt(int heltall), void writeDouble(double desimaltall)

Eksempel import java.io.*; class DirekteTilgFil { public static void main(String[] args) throws IOException { RandomAccessFile fil = new RandomAccessFile("Direktefil.dat", "rw"); /* Skriver 10 heltall til filen */ for (int i = 0; i < 10; i++) fil.writeInt(i); long fillengde = fil.length(); System.out.println("Filen har lengde: " + fillengde); /* * Flytter filpekeren til tall nr 7, leser det, * ganger det med 10, og skriver det tilbake igjen */ fil.seek(6 * 4); // flytter forbi 6 tall, hver på 4 byte int tall = fil.readInt(); tall *= 10; fil.seek(6 * 4); // flytter filpekeren "tilbake" fil.writeInt(tall); /* Leser hele filen */ fil.seek(0); // flytter til begynnelsen av filen try { while (true) { // stopper når EOFException kastes int t = fil.readInt(); System.out.println(t); } catch (EOFException e) { } fil.close(); } /* Utskrift Filen har lengde: */ for (int i = 0; i < 10; i++) fil.writeInt(i); fil.seek(6 * 4); fil.readInt(tall) 2 3 1

Hvordan lagre et objekt på fil? Hvordan lagrer vi et objekt av klassen Register på fil? class Register { private ArrayList liste = new ArrayList ();.. class Utstyr { public static final int BESTILLINGSFAKTOR = 5; private String betegnelse; private String leverandør; private int påLager; private int nedreGrense; Vi må plukke objektet fra hverandre og lagre hver enkelt dataverdi, for eksempel slik: skriv BESTILLINGSFAKTOR til filen skriv antall utstyrsobjekter til filen for (int i = 0; i < register.finnAntUtstyr(); i++) { Utstyr u = register.finnUtstyr(i); skriv betegnelse, leverandør, påLager, nedreGrense til filen } tilsvarende for alle utstyrsobjekter En streng må lagres ved at tegnene legges i en tabell av char. Tabellen og tabellens lengde skrives til filen. Ved innlesing må vi gjennomføre den omvendte prosessen. Eller - ?

Serialisering Java tilbyr serialisering av objekter. –Hele objektet lagres med én setning. –Filen er ikke lesbar i en editor. –Filen er sekvensiell og åpnes for lesing eller skriving. Å skrive objektet register til fil: FileOutputStream utstrøm = new FileOutputStream(”register.ser"); ObjectOutputStream ut = new ObjectOutputStream(utstrøm); ut.writeObject(register); ut.close(); Å lese objektet fra fil: FileInputStream innstrøm = new FileInputStream("leilighet1.ser"); ObjectInputStream inn = new ObjectInputStream(innstrøm); Object obj = inn.readObject(); …eventuell casting til Register gir advarsel: ” warning: [unchecked] unchecked cast” …gjøre noe med objektet inn.close();

Hva må til for at et objekt skal kunne serialiseres? Klasser som beskriver serialiserbare objekter må implementere interfacet java.io.Serializable. Enkelt! Det inneholder ingen metoder. I vårt tilfelle: –class Utstyr implements java.io.Serializable { –class Register implements java.io.Serializable { De aller fleste klassene i SDK implementerer Serializable Hva skjer i serialiseringsprosessen? –Objektvariabler lagres, klassevariabler lagres ikke. –Informasjon om hver enkelt klasse, inkludert versjon, lagres. –En referanse til et objekt fører til at objektet lagres første gang referansen påtreffes. Objektet får da et serienummer. Neste gang referansen påtreffes, lagres bare serienummeret. Dersom klassen forandrer seg (ny versjon blir laget) mellom skriving og lesing av filen kastes unntaket InvalidClassException.

Sammendrag - datafiler Sekvensielle datafiler med tekstlig overføring av data (kap ) –Åpnes for lesing eller skriving. –Leser linjevis med readLine(). –Skriver med print() og println(). –Eventuelle data av talltyper blir omformet til/fra tekst. –Konsollet er et spesialtilfelle av denne typen fil. –Kan lage en fil av denne typen i en editor. Binær overføring av data (kap. 12.8) –Data, også data av talltyper, overføres uten omforming. –En fil med slike data må alltid lages av et program. Filer med direkte tilgang (kap. 12.9) –Kan åpnes for både lesing og skriving. –Ikke sekvensiell: Kan flytte filpekeren framover og bakover. –Data overføres binært. Kun data av typen char vil være lesbare i en editor. Serialisering (kap ) –Skriver og leser hele objekter. –Sekvensiell behandling av filen. –Filen er ikke lesbar i en editor (tekster vil kunne gjenfinnes blant mye annet).