# Invoer
## Van het toetsenbord

    Uitdrukkingen
* Console.in.readInt;
* Console.in.readLine;
* (char) Console.in.readChar;
Bij de laatste uitdrukking wordt de overeenkomstige ASCII-integer doorgegeven; je moet dus expliciet naar char typecasten.
    Voorbeeld
Java-code: Invoer.java

## Van de commandoregel

De commandoregel werd vroeger in MS-DOS en in Unix-systemen gebruikt. Alles wat na "java ProgrammaNaam" (het aanroepen van het programma) komt, wordt beschouwd als een array van strings. Elk element wordt gescheiden door een spatie; opvragen van het i+1-ste element gebeurt met de uitdrukking args[i].
    Uitdrukkingen
* args[int index]
* Integer.parseInt(args[int index])
* Double.parseDouble(args[int index])
    Voorbeeld
Aanroepen met "java Commandolijn appel 10 3.14" geeft "appel 10 3.14":
Java-code: Commandolijn.java
Java-code: Omkeren.java

## Uit een bestand

Bij het lezen van een bestand, ziet het Warnierdiagram er altijd zo uit:

## Uit byte-bestand

    Uitdrukkingen
* FileInputStream lijst = new FileInputStream(bestandsnaam);
* boolean eof (end-of-file)
* int getal = lijst.read;
    Voorbeeld
Java-code: invoerB.java

## Uit een gebufferd bestand

Afhankelijk van het datatype, kies je readBoolean, readByte, readDouble, readFloat, readInt, readLong, readShort, writeBoolean(boolean) of writeByte(byte).
    Uitdrukkingen
* FileReader fileReader = new FileReader(bestandsnaam);
* BufferedReader inFile = new BufferedReader(fileReader);
* (String) lijn = inFile.readLine;
* fileReader.close;
    Voorbeeld
Onderstaande code gaat een bestand lijn per lijn inlezen en weergeven. Omdat er fouten kunnen optreden (zgn. checked errors), moeten de commando's om een bestand in te lezen tussen een try-en-catch-uitdrukking staan.
Java-code: invoerBS.java

# Uitvoer
## Naar het beeldscherm

    Uitdrukkingen
* System.out.print("tekst");
* System.out.println("tekst"); met LF (linefeed) en CR (carriage return), dus equivalent met System.out.print("tekst" + "\n");
* "\n" = nieuwe lijn, "\t" = tab
    Voorbeeld
Zie allereerste voorbeeld bovenaan.

## Naar byte-bestand

Het schrijven gebeurt byte per byte.
    Uitdrukkingen
* FileOutputStream lijst = new FileOutputStream(bestandsnaam, false);
* lijst.write(b[i]); //byte, byte of char
* lijst.close;
    Voorbeeld
Java-code: uitvoerB.java
Als je dit bestand bekijkt met een teksteditor, zie je plots tekens verschijnen. Een byte stelt via de ASCII-codering namelijk ook een teken voor. Zo is '*' = 42 en '!' = 33.
Dezelfde uitvoer is dan ook toepasbaar voor tekens (char):
Java-code: uitvoerC.java

## Naar een gebufferd bestand

Afhankelijk van het datatype, kies je writeBoolean(boolean), writeByte(byte), writeDouble(double), writeFloat(float), writeInt(int), writeLong(long), writeShort(short).
    Uitdrukkingen
* FileOutputStream lijst = new FileOutputStream(bestandsnaam);
* BufferedOutputStream buffer = new BufferedOutputStream(lijst);
* DataOutputStream data = new DataOutputStream(buffer);
* data.write(b[i]);
* buffer.close; Slechts bij het afsluiten van de buffer, wordt het bestand effectief opgevuld.
    Voorbeeld
Java-code: uitvoerBB.java
Analoog gaat het met tekst:
    Uitdrukkingen
* FileWriter lijst = new FileWriter(bestandsnaam, false); true zorgt voor toevoegen van de tekst, zonder de oude tekst te wissen.
* BufferedWriter buffer = new BufferedWriter(lijst);
* buffer.write(w[i]);
* buffer.newLine; equivalent met buffer.write("\n");
    Voorbeeld
Java-code: uitvoerBS.java

# Bestanden behandelen

    Uitdrukkingen
* File bestand = new File("pad");
* bestand.createNewFile;
* bestand.exists
* bestand.renameTo(bestand2)
* bestand.delete
* bestand.getName en bestand.getAbsolutePath
* pad.mkdir;
    Voorbeeld
Java-code: bestand.java
Java-code: map.java

# Objecten

De interface Serializable is een marker interface; die bevat immers geen methods, maar heeft als doel aan te duiden dat het object kan wegge­schreven en gelezen kan worden door middel van een stream.
    Uitdrukkingen
* stroom.writeObject(object)
    Voorbeeld
Java-code: objectStroom.java
Bovenstaande code schrijft onderstaand type object weg.
Java-code: Vriend.java
Je kan met transient voorkomen dat een bepaalde variabele van een object weggeschreven wordt, bvb. omdat je het niet veilig vindt om deze gevoelige informatie in een bestand weg te schrijven, bvb. privé-data als paswoord, inkomen, ...: private transient double loon;