Author: tchemit Date: 2012-09-24 22:09:52 +0200 (Mon, 24 Sep 2012) New Revision: 705 Url: http://forge.codelutin.com/repositories/revision/echobase/705 Log: fix copy gz files Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/io/EchoBaseIOUtil.java Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/io/EchoBaseIOUtil.java =================================================================== --- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/io/EchoBaseIOUtil.java 2012-09-24 20:07:44 UTC (rev 704) +++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/io/EchoBaseIOUtil.java 2012-09-24 20:09:52 UTC (rev 705) @@ -24,6 +24,7 @@ import com.google.common.base.Charsets; import com.google.common.base.Preconditions; +import com.google.common.io.Files; import fr.ifremer.echobase.EchoBaseTechnicalException; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.io.FileUtils; @@ -81,7 +82,25 @@ if (filesToMerge.size() == 1) { // simple copy - FileUtils.copyFile(filesToMerge.iterator().next(), destinationFile); + + File source = filesToMerge.iterator().next(); + if (source.getName().endsWith(".gz")) { + BufferedWriter writer = new BufferedWriter(Files.newWriter(destinationFile, Charsets.UTF_8)); + try { + BufferedReader reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(source)), Charsets.UTF_8)); + try { + IOUtils.copy(reader, writer); + reader.close(); + } finally { + IOUtils.closeQuietly(reader); + } + writer.close(); + } finally { + IOUtils.closeQuietly(writer); + } + } else { + FileUtils.copyFile(source, destinationFile); + } } else { // must merge all files @@ -101,7 +120,7 @@ if (toMergeFile.getName().endsWith(".gz")) { reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(toMergeFile)), Charsets.UTF_8)); } else { - reader = new BufferedReader(new InputStreamReader(new FileInputStream(toMergeFile), Charsets.UTF_8)); + reader = new BufferedReader(Files.newReader(toMergeFile, Charsets.UTF_8)); } try { // pass the first line (header)