mirror of
https://github.com/mitb-archive/filebot
synced 2024-11-04 08:25:03 -05:00
* use ATOMIC_MOVE only when necessary
This commit is contained in:
parent
ec0ff4256b
commit
2f1738b9ed
@ -37,6 +37,8 @@ import java.util.Scanner;
|
|||||||
import java.util.SortedMap;
|
import java.util.SortedMap;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@ -61,16 +63,21 @@ public final class FileUtilities {
|
|||||||
if (source.isDirectory()) {
|
if (source.isDirectory()) {
|
||||||
// move folder
|
// move folder
|
||||||
org.apache.commons.io.FileUtils.moveDirectory(source, destination);
|
org.apache.commons.io.FileUtils.moveDirectory(source, destination);
|
||||||
} else {
|
return destination;
|
||||||
// on Windows ATOMIC_MOVE allows us to rename files even if only lower/upper-case changes (without ATOMIC_MOVE the operation would be ignored)
|
}
|
||||||
|
|
||||||
|
// on Windows, use ATOMIC_MOVE which allows us to rename files even if only lower/upper-case changes (without ATOMIC_MOVE the operation would be ignored)
|
||||||
|
// but ATOMIC_MOVE can only work for files on the same drive, if that is not the case there is no point trying move with ATOMIC_MOVE
|
||||||
|
if (File.separator.equals("\\") && source.equals(destination) && Files.isSameFile(source.toPath().getRoot(), destination.toPath().getRoot())) {
|
||||||
try {
|
try {
|
||||||
Files.move(source.toPath(), destination.toPath(), StandardCopyOption.ATOMIC_MOVE);
|
return Files.move(source.toPath(), destination.toPath(), StandardCopyOption.ATOMIC_MOVE).toFile();
|
||||||
} catch (AtomicMoveNotSupportedException e) {
|
} catch (AtomicMoveNotSupportedException e) {
|
||||||
Files.move(source.toPath(), destination.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
Logger.getLogger(FileUtilities.class.getName()).log(Level.WARNING, e.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return destination;
|
// Linux and Mac OS X
|
||||||
|
return Files.move(source.toPath(), destination.toPath(), StandardCopyOption.REPLACE_EXISTING).toFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static File copyAs(File source, File destination) throws IOException {
|
public static File copyAs(File source, File destination) throws IOException {
|
||||||
@ -80,12 +87,11 @@ public final class FileUtilities {
|
|||||||
if (source.isDirectory()) {
|
if (source.isDirectory()) {
|
||||||
// copy folder
|
// copy folder
|
||||||
org.apache.commons.io.FileUtils.copyDirectory(source, destination);
|
org.apache.commons.io.FileUtils.copyDirectory(source, destination);
|
||||||
} else {
|
return destination;
|
||||||
// copy file
|
|
||||||
Files.copy(source.toPath(), destination.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return destination;
|
// copy file
|
||||||
|
return Files.copy(source.toPath(), destination.toPath(), StandardCopyOption.REPLACE_EXISTING).toFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static File resolveDestination(File source, File destination, boolean mkdirs) throws IOException {
|
public static File resolveDestination(File source, File destination, boolean mkdirs) throws IOException {
|
||||||
|
Loading…
Reference in New Issue
Block a user