From a6d9c84910f6ccfd29227138a2964ddf0dbff0fd Mon Sep 17 00:00:00 2001 From: kimchy Date: Sun, 4 Apr 2010 04:11:07 +0300 Subject: [PATCH] better copy over file --- .../util/io/FileSystemUtils.java | 33 ++++++++++++++--- .../util/lucene/Directories.java | 36 +++---------------- 2 files changed, 34 insertions(+), 35 deletions(-) diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/util/io/FileSystemUtils.java b/modules/elasticsearch/src/main/java/org/elasticsearch/util/io/FileSystemUtils.java index 9fda7a3f3df..f6fb092b325 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/util/io/FileSystemUtils.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/util/io/FileSystemUtils.java @@ -19,10 +19,8 @@ package org.elasticsearch.util.io; -import java.io.File; -import java.io.IOException; -import java.io.InterruptedIOException; -import java.io.RandomAccessFile; +import java.io.*; +import java.nio.channels.FileChannel; /** * @author kimchy (Shay Banon) @@ -91,6 +89,33 @@ public class FileSystemUtils { } } + public static void copyFile(File sourceFile, File destinationFile) throws IOException { + FileInputStream sourceIs = null; + FileChannel source = null; + FileOutputStream destinationOs = null; + FileChannel destination = null; + try { + sourceIs = new FileInputStream(sourceFile); + source = sourceIs.getChannel(); + destinationOs = new FileOutputStream(destinationFile); + destination = destinationOs.getChannel(); + destination.transferFrom(source, 0, source.size()); + } finally { + if (source != null) { + source.close(); + } + if (sourceIs != null) { + sourceIs.close(); + } + if (destination != null) { + destination.close(); + } + if (destinationOs != null) { + destinationOs.close(); + } + } + } + private FileSystemUtils() { } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/util/lucene/Directories.java b/modules/elasticsearch/src/main/java/org/elasticsearch/util/lucene/Directories.java index 9455c004d61..cbfca61bb08 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/util/lucene/Directories.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/util/lucene/Directories.java @@ -24,12 +24,12 @@ import org.apache.lucene.index.IndexReader; import org.apache.lucene.store.*; import org.elasticsearch.index.store.support.ForceSyncDirectory; import org.elasticsearch.util.SizeValue; -import org.elasticsearch.util.io.FileSystemUtils; import java.io.*; -import java.nio.channels.FileChannel; import java.util.Collection; +import static org.elasticsearch.util.io.FileSystemUtils.*; + /** * A set of utilities for Lucene {@link Directory}. * @@ -85,25 +85,12 @@ public class Directories { if (!copyTo.exists()) { copyTo.createNewFile(); } - FileChannel source = null; - FileChannel destination = null; - try { - source = new FileInputStream(new File(((FSDirectory) dir).getFile(), fileName)).getChannel(); - destination = new FileOutputStream(copyTo).getChannel(); - destination.transferFrom(source, 0, source.size()); - } finally { - if (source != null) { - source.close(); - } - if (destination != null) { - destination.close(); - } - } + copyFile(new File(((FSDirectory) dir).getFile(), fileName), copyTo); } else { copyFromDirectory(dir.openInput(fileName), new FileOutputStream(copyTo)); } // sync the file - FileSystemUtils.syncFile(copyTo); + syncFile(copyTo); } public static void copyFromDirectory(IndexInput ii, OutputStream os) throws IOException { @@ -142,20 +129,7 @@ public class Directories { if (!destinationFile.exists()) { destinationFile.createNewFile(); } - FileChannel source = null; - FileChannel destination = null; - try { - source = new FileInputStream(copyFrom).getChannel(); - destination = new FileOutputStream(destinationFile).getChannel(); - destination.transferFrom(source, 0, source.size()); - } finally { - if (source != null) { - source.close(); - } - if (destination != null) { - destination.close(); - } - } + copyFile(copyFrom, destinationFile); } else { copyToDirectory(new FileInputStream(copyFrom), dir.createOutput(fileName)); }