From 0f05b47109705c4d4f645bca5ece71f2fc8ca642 Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Sun, 20 Nov 2011 21:32:24 +0000 Subject: [PATCH] * use NIO2 Files.move() on JRE7 --- .../filebot/ui/rename/RenameAction.java | 7 ++----- .../net/sourceforge/tuned/FileUtilities.java | 19 +++++++++++++++++-- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/source/net/sourceforge/filebot/ui/rename/RenameAction.java b/source/net/sourceforge/filebot/ui/rename/RenameAction.java index 33f0e59f..5fc5e1d3 100644 --- a/source/net/sourceforge/filebot/ui/rename/RenameAction.java +++ b/source/net/sourceforge/filebot/ui/rename/RenameAction.java @@ -23,7 +23,6 @@ import java.util.Set; import java.util.TreeSet; import java.util.AbstractMap.SimpleEntry; import java.util.Map.Entry; -import java.util.concurrent.CancellationException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.logging.Level; @@ -80,7 +79,7 @@ class RenameAction extends AbstractAction { } } catch (Exception e) { // could not rename one of the files, revert all changes - UILogger.warning(e.getMessage()); + UILogger.log(Level.WARNING, e.getMessage(), e); } window.setCursor(Cursor.getDefaultCursor()); @@ -224,10 +223,8 @@ class RenameAction extends AbstractAction { protected void done() { try { get(); // check exceptions - } catch (CancellationException e) { - // ignore } catch (Exception e) { - UILogger.log(Level.SEVERE, e.getMessage(), e); + // ignore } // collect renamed types diff --git a/source/net/sourceforge/tuned/FileUtilities.java b/source/net/sourceforge/tuned/FileUtilities.java index 6f777d3f..c0e87100 100644 --- a/source/net/sourceforge/tuned/FileUtilities.java +++ b/source/net/sourceforge/tuned/FileUtilities.java @@ -14,6 +14,7 @@ import java.io.Reader; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.nio.charset.Charset; +import java.nio.file.Files; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -45,14 +46,28 @@ public final class FileUtilities { throw new IOException("Failed to create folder: " + destinationFolder); } - if (!source.renameTo(destination)) { - throw new IOException("Failed to rename file: " + source.getName()); + try { + renameFileNIO2(source, destination); + } catch (LinkageError e) { + renameFileIO(source, destination); } return destination; } + private static void renameFileNIO2(File source, File destination) throws IOException { + Files.move(source.toPath(), destination.toPath()); + } + + + private static void renameFileIO(File source, File destination) throws IOException { + if (!source.renameTo(destination)) { + throw new IOException("Failed to rename file: " + source.getName()); + } + } + + public static byte[] readFile(File source) throws IOException { InputStream in = new FileInputStream(source);