Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3bfba645 authored by Vincent Bourgmayer's avatar Vincent Bourgmayer
Browse files

Merge branch '831-replace-file-moving-code' into 'v1-oreo'

Change way to move file at the end of a download

See merge request !182
parents 886266e8 e072d92b
Loading
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -14,6 +14,8 @@ import static com.owncloud.android.lib.common.operations.RemoteOperationResult.R
import static com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode.INVALID_OVERWRITE;
import static com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode.OK;

import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;

import android.content.Context;
import com.owncloud.android.lib.common.OwnCloudClient;
import com.owncloud.android.lib.common.operations.RemoteOperation;
@@ -21,6 +23,10 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
import com.owncloud.android.lib.resources.files.DownloadFileRemoteOperation;
import com.owncloud.android.lib.resources.files.model.RemoteFile;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

import foundation.e.drive.database.DbHelper;
import foundation.e.drive.models.SyncedFileState;
import foundation.e.drive.utils.CommonUtils;
@@ -142,16 +148,13 @@ public class DownloadFileOperation extends RemoteOperation {
     * @return true if success, false otherwise
     */
    private boolean moveFileToRealLocation(File tmpFile, File targetFile) {
        final File targetFolder = targetFile.getParentFile();

        try {
            if (!targetFolder.exists()) {
                targetFolder.mkdirs();
            } else if (targetFile.exists()) {
                targetFile.delete();
            final Path copyResult = Files.copy(tmpFile.toPath(), targetFile.toPath(), REPLACE_EXISTING);
            if (copyResult.toFile().length() == tmpFile.length()) {
                tmpFile.delete();
                return true;
            }
            return tmpFile.renameTo(targetFile);
        } catch (SecurityException | NullPointerException exception) {
        } catch (IOException | SecurityException | NullPointerException exception) {
            Timber.e(exception);
        }
        return false;