aboutsummaryrefslogtreecommitdiff
path: root/src/com/cyanogenmod/filemanager/commands/java/CopyCommand.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/cyanogenmod/filemanager/commands/java/CopyCommand.java')
-rw-r--r--src/com/cyanogenmod/filemanager/commands/java/CopyCommand.java85
1 files changed, 2 insertions, 83 deletions
diff --git a/src/com/cyanogenmod/filemanager/commands/java/CopyCommand.java b/src/com/cyanogenmod/filemanager/commands/java/CopyCommand.java
index 3e1e316..0c7832c 100644
--- a/src/com/cyanogenmod/filemanager/commands/java/CopyCommand.java
+++ b/src/com/cyanogenmod/filemanager/commands/java/CopyCommand.java
@@ -23,13 +23,10 @@ import com.cyanogenmod.filemanager.console.ExecutionException;
import com.cyanogenmod.filemanager.console.InsufficientPermissionsException;
import com.cyanogenmod.filemanager.console.NoSuchFileOrDirectory;
import com.cyanogenmod.filemanager.model.MountPoint;
+import com.cyanogenmod.filemanager.util.FileHelper;
import com.cyanogenmod.filemanager.util.MountPointHelper;
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
/**
@@ -84,7 +81,7 @@ public class CopyCommand extends Program implements CopyExecutable {
}
//Copy recursively
- if (!copyRecursive(s, d)) {
+ if (!FileHelper.copyRecursive(s, d, getBufferSize())) {
if (isTrace()) {
Log.v(TAG, "Result: FAIL. InsufficientPermissionsException"); //$NON-NLS-1$
}
@@ -111,82 +108,4 @@ public class CopyCommand extends Program implements CopyExecutable {
public MountPoint getDstWritableMountPoint() {
return MountPointHelper.getMountPointFromDirectory(this.mDst);
}
-
- /**
- * Method that copies recursively to the destination
- *
- * @param src The source file or folder
- * @param dst The destination file or folder
- * @return boolean If the operation complete successfully
- * @throws ExecutionException If a problem was detected in the operation
- */
- public boolean copyRecursive(final File src, final File dst) throws ExecutionException {
- if (src.isDirectory()) {
- // Create the directory
- if (dst.exists() && !dst.isDirectory()) {
- Log.e(TAG,
- String.format("Failed to check destionation dir: %s", dst)); //$NON-NLS-1$
- throw new ExecutionException("the path exists but is not a folder"); //$NON-NLS-1$
- }
- if (!dst.exists()) {
- if (!dst.mkdir()) {
- Log.e(TAG, String.format("Failed to create directory: %s", dst)); //$NON-NLS-1$
- return false;
- }
- }
- File[] files = src.listFiles();
- if (files != null) {
- for (int i = 0; i < files.length; i++) {
- if (!copyRecursive(files[i], new File(dst, files[i].getName()))) {
- return false;
- }
- }
- }
- } else {
- // Copy the directory
- if (!bufferedCopy(src, dst)) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Method that copies a file
- *
- * @param src The source file
- * @param dst The destination file
- * @return boolean If the operation complete successfully
- */
- public boolean bufferedCopy(final File src, final File dst) {
- BufferedInputStream bis = null;
- BufferedOutputStream bos = null;
- try {
- bis = new BufferedInputStream(new FileInputStream(src), getBufferSize());
- bos = new BufferedOutputStream(new FileOutputStream(dst), getBufferSize());
- int read = 0;
- byte[] data = new byte[getBufferSize()];
- while ((read = bis.read(data, 0, getBufferSize())) != -1) {
- bos.write(data, 0, read);
- }
- return true;
-
- } catch (Throwable e) {
- Log.e(TAG,
- String.format(TAG, "Failed to copy from %s to %d", src, dst), e); //$NON-NLS-1$
- return false;
- } finally {
- try {
- if (bis != null) {
- bis.close();
- }
- } catch (Throwable e) {/**NON BLOCK**/}
- try {
- if (bos != null) {
- bos.close();
- }
- } catch (Throwable e) {/**NON BLOCK**/}
- }
-
- }
}