The class Car
import java.io.*; public class Car { private String model; private int year; private int km; private double price; public Car(String m, int y, int k, double p) { model = m; year = y; km = k; price = p; } public String toString() { return model + ", year: " + year + ", km: " + km + ", price: " + price; } public String getModel() { return model; } public int getYear() { return year; } public int getKm() { return km; } public double getPrice() { return price; } public boolean equalTo(Car c) { return this.model.equals(c.model) && this.year == c.year && this.km == c.km && this.price == c.price; } public static Car read(BufferedReader br) throws IOException { String s = br.readLine(); if (s == null) return null; else return new Car(s, Integer.parseInt(br.readLine()), Integer.parseInt(br.readLine()), Double.parseDouble(br.readLine())); } }
The class CarList
import java.io.*; public class CarList { private String filename; public CarList (String fn) { filename = fn; } public int countNewCars() throws IOException { FileReader fr = new FileReader(filename); BufferedReader br = new BufferedReader(fr); int count = 0; Car c = Car.read(br); while (c != null) { if (c.getKm() == 0) count++; c = Car.read(br); } br.close(); return count; } public Car mostExpensiveCar() throws IOException { // this is the second alternative for opening a file for reading FileInputStream is = new FileInputStream(filename); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); double max = 0; Car cmax = null; Car c = Car.read(br); while (c != null) { if (c.getPrice() > max) { max = c.getPrice(); cmax = c; } c = Car.read(br); } br.close(); return cmax; } public void addCar(Car c) throws IOException { FileWriter fw = new FileWriter(filename, true); //open file in append mode PrintWriter pw = new PrintWriter(fw); pw.println(c.getModel()); pw.println(c.getYear()); pw.println(c.getKm()); pw.println(c.getPrice()); pw.close(); } public void removeCar(Car c) throws IOException { File f = new File(filename); FileInputStream is = new FileInputStream(f); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); // this is the second alternative for opening a file for writing File ftemp = new File("cars-temporary.txt"); FileOutputStream os = new FileOutputStream(ftemp); PrintWriter pw = new PrintWriter(os); Car curr = Car.read(br); while (curr != null) { if (!curr.equalTo(c)) { pw.println(curr.getModel()); pw.println(curr.getYear()); pw.println(curr.getKm()); pw.println(curr.getPrice()); } curr = Car.read(br); } br.close(); pw.close(); ftemp.renameTo(f); } }