public File downloadAndUntar() throws IOException { if (fileDir != null) { return fileDir; } File baseDir = getBaseDir(); if (!(baseDir.isDirectory() || baseDir.mkdir())) { throw new IOException("Could not mkdir " + baseDir); } log.info("Downloading {}...", getName()); // getFromOrigin training records File tarFile = new File(baseDir, getTrainingFilesFilename()); File testFileLabels = new File(baseDir, getTestFilesFilename()); tryDownloadingAFewTimes(new URL(getTrainingFilesURL()), tarFile, getTrainingFilesMD5()); tryDownloadingAFewTimes(new URL(getTestFilesURL()), testFileLabels, getTestFilesMD5()); ArchiveUtils.unzipFileTo(tarFile.getAbsolutePath(), baseDir.getAbsolutePath()); ArchiveUtils.unzipFileTo(testFileLabels.getAbsolutePath(), baseDir.getAbsolutePath()); // getFromOrigin training records File labels = new File(baseDir, getTrainingFileLabelsFilename()); File labelsTest = new File(baseDir, getTestFileLabelsFilename()); tryDownloadingAFewTimes(new URL(getTrainingFileLabelsURL()), labels, getTrainingFileLabelsMD5()); tryDownloadingAFewTimes(new URL(getTestFileLabelsURL()), labelsTest, getTestFileLabelsMD5()); ArchiveUtils.unzipFileTo(labels.getAbsolutePath(), baseDir.getAbsolutePath()); ArchiveUtils.unzipFileTo(labelsTest.getAbsolutePath(), baseDir.getAbsolutePath()); fileDir = baseDir; return fileDir; }