I am trying to learn how to utilize Java 8 features(such as lambdas and streams) in my daily programming, since it makes for much cleaner code.

Here's what I am currently working on:
I get a string stream from a local file with some data which I turn into objects later. The input file structure looks something like this:

    Airport name; Country; Continent; some number;

And my code looks like this:

    public class AirportConsumer implements AirportAPI {

    List<Airport> airports = new ArrayList<Airport>();

    @Override
    public Stream<Airport> getAirports() {
        Stream<String> stream = null;
        try {
            stream = Files.lines(Paths.get("resources/planes.txt"));
            stream.forEach(line -> createAirport(line));

        } catch (IOException e) {
            e.printStackTrace();
        }
        return airports.stream();
    }

    public void createAirport(String line) {
        String airport, country, continent;
        int length;


        airport = line.substring(0, line.indexOf(';')).trim();
        line = line.replace(airport + ";", "");
        country = line.substring(0,line.indexOf(';')).trim();
        line = line.replace(country + ";", "");
        continent = line.substring(0,line.indexOf(';')).trim();
        line = line.replace(continent + ";", "");
        length = Integer.parseInt(line.substring(0,line.indexOf(';')).trim());
        airports.add(new Airport(airport, country, continent, length));
        }
    }

And in my main class I iterate over the object stream and print out the results:

    public class Main {



    public void toString(Airport t){
      System.out.println(t.getName() + " " + t.getContinent());
    }

    public static void main(String[] args) throws IOException {
        Main m = new Main();
        m.whatever();

    }

    private void whatever() throws IOException {
        AirportAPI k = new AirportConsumer();
        Stream<Airport> s;
        s = k.getAirports();
        s.forEach(this::toString);

    }


    }


My question is this: How can I optimize this code, so I don't have to parse the lines from the file separately, but instead create a stream of objects Airport straight from the source file? Or is this the extent in which I can do this?