Deo zbornika Učimo Javu

Čitanje iz datoteke

Email Twitter LinkedIn Facebook Google

Klasa FileInputStream predstavlja ulazni tok koji čita bajtove iz datoteke. Ima sljedeće javne konstruktore i metode:

public FileInputStream(String name) throws FileNotFoundException
public FileInputStream(File file) throws FileNotFoundException
public FileInputStream(FileDescriptor fdObj)
public native int read() throws IOException
public int read(byte[] data) throws IOException
public int read(byte[] data, int offset, int length) throws IOException
public native long skip(long n) throws IOException
public native int available() throws IOException
public native void close() throws IOException
public final FileDescriptor getFD() throws IOException

S iznimkom konstruktora i metode getFD(), ove metode samo prekrivaju istoimene metode klase java.io.InputStream. Jedina je razlika što čitaju podatke iz datoteke.

Instanciranje klase

Novi objekt tipa FileInputStream pravite tako da konstruktoru proslijedite ime datoteke, na primjer:

FileInputStream fis = new FileInputStream("ulaz.txt");

Ako fajl ne postoji, izbacit će se iznimka FileNotFoundException. Općenito, Java će tražiti datoteke u aktivnom direktoriju, no one se ne moraju nužno nalaziti u istom u kom se nalazi .class datoteka.

Primjer čitanja iz datoteke

Sljedeća aplikacija čita datoteke koje su navedene na komandnoj liniji i ispisuje njihov sadržaj na System.out.

import java.io.*;

public class Type {

  public static void main(String[] args) {

    for (int i = 0; i < args.length; i++) {
      try {
        FileInputStream fis = new FileInputStream(args[i]);
        int n;
        while ((n = fis.available()) > 0) {
          byte[] b = new byte[n];
          int result = fis.read(b);
          if (result == -1) break;
          String s = new String(b);
          System.out.print(s);
        } // end while
        fis.close();
      } // end try
      catch (FileNotFoundException e) {
        System.err.println("Could not find file " + args[i]);
      }
      catch (IOException e) {
        System.err.println(e);
      }
      System.out.println();
    } // end for

  } // end main

}
% javac Type.java
% java Type "../html/TricksterApplet.html"
<APPLET CODE="TricksterApplet.class"
CODEBASE="http://student.math.hr/~vedris/java/classes"
ARCHIVE="Trickster.jar"
WIDTH=1 HEIGHT=1>
</APPLET>

Izvor: Elliotte Rusty Harold, Java Lecture Notes, preveo Draško Budin, priredio Damjan Pavlica.