import java.io.*; import java.util.*; class MyFileObject { private final BufferedReader reader; static int nrInstances = 0; public MyFileObject(BufferedReader reader) { this.reader = reader; ++nrInstances; System.out.println("nrInstances up, now " + nrInstances); } public void finalize() { --nrInstances; System.out.println("nrInstances down, now " + nrInstances); } } // class MyFileObject public class FileCounter3 { public static void main(String[] args) { try { int nrFiles = 0; while (true) { BufferedReader in = new BufferedReader(new FileReader("dummy.txt")); MyFileObject mfo = new MyFileObject(in); ++nrFiles; System.out.println("nrFiles = " + nrFiles); } } catch (FileNotFoundException e) { System.out.println("Exception caught: " + e.getMessage()); } } // main } // class FileCounter3