private static void copyTo(final ProductEntry entry, final File targetFolder) throws Exception { if (isSingleFile(entry)) { final File newFile = new File(targetFolder, entry.getFile().getName()); Files.copy(entry.getFile().toPath(), newFile.toPath(), REPLACE_EXISTING); } else if (isDimap(entry)) { final File newFile = new File(targetFolder, entry.getFile().getName()); Files.copy(entry.getFile().toPath(), newFile.toPath(), REPLACE_EXISTING); final String dataFolderName = entry.getFile().getName().replace( DimapProductConstants.DIMAP_HEADER_FILE_EXTENSION, DimapProductConstants.DIMAP_DATA_DIRECTORY_EXTENSION); final File oldDataFolder = new File(entry.getFile().getParentFile(), dataFolderName); final File newDataFolder = new File(targetFolder, dataFolderName); FileIOUtils.copyFolder(oldDataFolder.toPath(), newDataFolder.toPath()); } else if (isSMOS(entry)) { final File newFile = new File(targetFolder, entry.getFile().getName()); Files.copy(entry.getFile().toPath(), newFile.toPath(), REPLACE_EXISTING); final File hdrFile = FileUtils.exchangeExtension(entry.getFile(), ".HDR"); final File newHdrFile = new File(targetFolder, hdrFile.getName()); Files.copy(hdrFile.toPath(), newHdrFile.toPath(), REPLACE_EXISTING); } else if (isFolderProduct(entry)) { final File newFile = new File(targetFolder, entry.getFile().getParentFile().getName()); FileIOUtils.copyFolder(entry.getFile().getParentFile().toPath(), newFile.toPath()); } }