public void load() { if (!modelExists()) { loadError = "Cannot find " + LEVELS_DAT_FILE + "."; return; } File folder = new File(location); File dat = new File(folder, LEVELS_DAT_FILE); // File lst = new File(folder, LEVELS_LST_FILE); if (!dat.isFile()) return; ArrayList levels = new ArrayList(); try { FileInputStream reader = new FileInputStream(dat); long fileLength = dat.length(); int length = model.getField().getSize() + 96; int readLength = 0; byte[] buffer = new byte[length]; while (fileLength - readLength >= length) { int toRead = length; while (toRead > 0) { toRead -= reader.read(buffer, length - toRead, toRead); } readLength += length; SupaplexLevel level = new SupaplexLevel(); level.setModel(model); level.loadFromBytes(buffer); levels.add(level); } reader.close(); } catch (Exception e) { e.printStackTrace(); } SupaplexLevel[] ls = (SupaplexLevel[]) levels.toArray(new SupaplexLevel[0]); model.setLevels(ls); }