Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.

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
C++ for Java-programmerere
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.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Filbehandling (Kapittel 8)
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.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Samarbeid mellom objekter
Java 12 Mer filbehandling - skrive til fil HashMap Et større eksempel Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
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.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
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.
IS-102 Klassedefinisjoner
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.
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 11 Applet’s Hva karakteriserer applet’sside.
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 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 august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 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 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.
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 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 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.
Programmering i Java versjon desember 2002 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.
Å 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.
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.
Programmering i Java tilpasset undervisning våren 2009 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet.
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.
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
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.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
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.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
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 4) Mer om forgreninger, While-løkker
Inf1000 (Uke 5) Arrayer, filer og tekst
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.
Jæger: Robuste og sikre systemer INF150 Programmering torsdag 14.9 Ulike måter for å lese inn og skrive ut data. Kap. 3.5 mer om if – setninger Ferdige.
Variabler, datatyper og uttrykk
Utskrift av presentasjonen:

Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12 Datafiler Hva er en datafil?side 2 Datafiler og strømmerside 3 Eksempel med lesing og skrivingside 4-7 Sekvensielle datafiler – sammendragside 8-9 Inn-/ut-klassene i Javaside Å lese tall fra en fil, klassen Scannerside 12 Å kommunisere med konsolletside 13 Hva skjer, tekstlig/binær dataoverføringside Direkte tilgang til innholdet i en filside Hvordan lagre objekter på en fil / serialiseringside Sammendrag – datafilerside 22

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 2 Hva er en datafil? •Hittil har programmene våre kommunisert med omverdenen via tastatur og skjerm. •Program kan også kommunisere med datafiler. •Eksempler på datafiler er filer du arbeider med i tekstbehandlere og editorer. •Datafiler gjør det mulig for programmet å ”huske” data fra kjøring til kjøring, brukeren trenger ikke å skrive inn alt på nytt.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 3 Datafiler og strømmer •Vi betrakter dataene som sendes mellom program og fil som en strøm: –Data strømmer fra kilde til bestemmelsessted. –Begynner alltid med å åpne strømmen. –Fyller på strømmen når vi skal skrive til datafilen. –Tømmer strømmen når vi skal lese fra filen. –Til slutt lukker vi strømmen. •I programmet begynner vi med å knytte en strøm til den fysiske filen, vi åpner filen. •Strømmen er det objektet som vi sender meldinger til når vi skal lese eller skrive til filen. •Lukking av strømmen fører til at forbindelsen mellom strømmen og den fysiske filen opphører, vi lukker filen. •Det finnes mange strømklasser. Vi bruker dem på en spesiell måte: –Et objekt av én strømklasse blir gjerne argument til konstruktøren til en annen klasse. Dette gjentas inntil vi får en strøm som passer med det behovet vi har.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 4 Eksempel på program som kommuniserer med en datafil Anne Eriksen Tove Ås Berit Jensen Anne Eriksen Tove Ås Berit Jensen Toril Sollien Arne Håkonsen programmet kjører programmet leser data fra datafilen programmet skriver data til datafilen navnefil.txt før kjøring av programmet navnefil.txt etter kjøring av programmet brukeren skriver inn data programmet leser data fra tastaturet

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 5 Å lese alle navnene fra filen FileReader leseforbTilFil = new FileReader(filnavn); BufferedReader leser = new BufferedReader(leseforbTilFil); String etNavn = leser.readLine(); String innlesteNavn = "Følgende navn er registrert:"; while(etNavn != null) { // null betyr filslutt innlesteNavn += ("\n" + etNavn); etNavn = leser.readLine(); } leser.close(); showMessageDialog(null, innlesteNavn); åpner filen data bør bufres leser en og en linje, og lagrer dem i et strengobjekt lukker strømmen, og dermed filen skriver navnene på skjermen String filnavn = ”navnefil.txt”

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 6 Lesing fra fil via strømmer ”klient” leser: BufferedReader readLine() leseforbTilFil: InputStreamReader read() [buffer tomt] fill() innfil: FileInputStream read() klient sender meldingen readLine() til leser hvis bufferet er tomt, må leser fylle bufferet leseforbTilFil leser byte og omformer til char som legges i bufferet leser henter en linje fra bufferet og returnerer til klient mange byte returneres mange Unicode-tegn returneres

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 7 Å skrive til fil FileWriter skriveforbTilFil = new FileWriter(filnavn, true); PrintWriter skriver = new PrintWriter( new BufferedWriter(skriveforbTilFil)); String nyttNavn = ”Peder Ås”; skriver.println(nyttNavn); skriver.close(); åpner filen data bør bufres, og vi ønsker å bruke println() som vi kjenner fra før skriver en linje til strømmen lukker strømmen, og dermed filen Gjør oppgavene side 432 og 433. Vis programliste 12.1 side

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 8 Sekvensielle datafiler - sammendrag •En sekvensiell datafil åpnes for lesing eller skriving. •Lesing foregår alltid fra begynnelsen av filen. •Skriving kan foregå fra begynnelsen av filen (andre argument til FileWriter() er false), eller etter det som ligger på filen fra før (andre argument til FileWriter() er true). •En fil som programmet skal lese fra, må eksistere på forhånd. •En fil som programmet skal skrive til, blir laget dersom den ikke eksisterer på forhånd.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 9 Lesing og skriving til fil - oversikt å lese fra filå skrive til fil å åpne fil FileReader forbindelse = new FileReader(filnavn) FileWriter forbindelse = new FileWriter(filnavn, append) å lage lesestrøm eller skrivestrøm BufferedReader leser = new BufferedReader( forbindelse ) PrintWriter skriver = new PrintWriter(new BufferedWriter( forbindelse)) å lese/skrive til strømmen leser.readLine(...)skriver.print(....) skriver.println(....) å lukke strømmen leser.close()skriver.close()

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 10 Et lite utsnitt av inn-/ut-klassene i JDK 1.0 InputStream FileOutputStream FilterOutputStream PrintStream FileInputStream Object OutputStream Object

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 11 Et lite utsnitt av inn-/ut-klassene i JDK 1.1 og nyere Reader BufferedReader InputStreamReader FileReader Writer OutputStreamWriter PrintWriter FileWriter BufferedWriter Object

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 12 Å 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 437. Gjør oppgaven side 438.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 13 Å kommunisere med konsollet •Utskrift er velkjent: System.out.println() •Innlesing blir omtrent som ved lesing fra fil: InputStreamReader leseforbTilKonsoll = new InputStreamReader(System.in); BufferedReader leser = new BufferedReader(leseforbTilKonsoll); System.out.print("Skriv fornavn: "); System.out.flush(); // tømmer bufferet etter at print() er brukt String fornavn = leser.readLine(); •I konsollvinduet: >java les Skriv fornavn: Åse

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 14 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

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 15 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

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 16 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)

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 17 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

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 18 Hvordan lagre et objekt på fil? •Hvordan lagrer vi et objekt av klassen Oppussingsprosjekt på fil? class Oppussingsprosjekt { private String navn; private ArrayList alleFlater = new ArrayList (); private ArrayList alleMalingstyper = new ArrayList (); •Vi må plukke objektet fra hverandre og lagre hver enkelt dataverdi, for eksempel slik: skriv først antall flater til filen for (int i = 0; i < prosjekt.finnAntFlater(); i++) { Flate flaten = prosjekt.finnFlate(i); skriv navn, lengde og bredde til flaten, samt navn på malingstype } tilsvarende for alle malingstyper •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 - ?

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 19 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 enLeilighet til fil: FileOutputStream utstrøm = new FileOutputStream("leilighet1.ser"); ObjectOutputStream ut = new ObjectOutputStream(utstrøm); ut.writeObject(enLeilighet); 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 Oppussingsprosjekt …gjøre noe med objektet inn.close();

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 20 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 Flate implements java.io.Serializable { –class Maling implements java.io.Serializable { –class Oppussingsprosjekt 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.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 21 Vis programliste 12.4 side Gjør oppgavene side 447.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 12, side 22 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).