From 09ff31d88eaa1b3cce946f156eeb5ea31346d4cc Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Mon, 7 Nov 2016 22:17:37 +0800 Subject: [PATCH] Minor optimizations --- .classpath | 2 +- source/net/filebot/media/ReleaseInfo.java | 7 +++++-- .../rename/FilesListTransferablePolicy.java | 5 +---- source/net/filebot/util/FileSet.java | 6 +++--- source/net/filebot/util/FileUtilities.java | 21 ++++++++++++------- 5 files changed, 23 insertions(+), 18 deletions(-) diff --git a/.classpath b/.classpath index f46e2a7f..f612db73 100644 --- a/.classpath +++ b/.classpath @@ -14,7 +14,7 @@ - + diff --git a/source/net/filebot/media/ReleaseInfo.java b/source/net/filebot/media/ReleaseInfo.java index 6abc2633..f514bf91 100644 --- a/source/net/filebot/media/ReleaseInfo.java +++ b/source/net/filebot/media/ReleaseInfo.java @@ -17,6 +17,7 @@ import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.net.URL; +import java.nio.ByteBuffer; import java.text.Collator; import java.text.Normalizer; import java.text.Normalizer.Form; @@ -36,6 +37,7 @@ import java.util.function.IntFunction; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.IntStream; +import java.util.stream.Stream; import org.tukaani.xz.XZInputStream; @@ -493,8 +495,9 @@ public class ReleaseInfo { byte[] bytes = cache.bytes(name, n -> new URL(getProperty(n)), XZInputStream::new).expire(refreshDuration.optional().orElse(expirationTime)).get(); // all data files are UTF-8 encoded XZ compressed text files - String text = new String(bytes, UTF_8); - return NEWLINE.splitAsStream(text).filter(s -> s.length() > 0).map(parse).filter(Objects::nonNull).toArray(generator); + Stream lines = NEWLINE.splitAsStream(UTF_8.decode(ByteBuffer.wrap(bytes))); + + return lines.filter(s -> s.length() > 0).map(parse).filter(Objects::nonNull).toArray(generator); }; } diff --git a/source/net/filebot/ui/rename/FilesListTransferablePolicy.java b/source/net/filebot/ui/rename/FilesListTransferablePolicy.java index d6e512aa..28b60402 100644 --- a/source/net/filebot/ui/rename/FilesListTransferablePolicy.java +++ b/source/net/filebot/ui/rename/FilesListTransferablePolicy.java @@ -1,11 +1,9 @@ package net.filebot.ui.rename; -import static java.util.Arrays.*; import static java.util.stream.Collectors.*; import static net.filebot.Logging.*; import static net.filebot.MediaTypes.*; import static net.filebot.util.FileUtilities.*; -import static net.filebot.util.RegularExpressions.*; import java.awt.datatransfer.Transferable; import java.io.File; @@ -66,8 +64,7 @@ class FilesListTransferablePolicy extends BackgroundFileTransferablePolicy // load file paths from text files if (recursive && LIST_FILES.accept(f)) { try { - String[] lines = NEWLINE.split(readTextFile(f)); - List paths = stream(lines).filter(s -> s.length() > 0).map(path -> { + List paths = readLines(f).stream().filter(s -> s.length() > 0).map(path -> { try { File file = new File(path); return file.isAbsolute() && file.exists() ? file : null; diff --git a/source/net/filebot/util/FileSet.java b/source/net/filebot/util/FileSet.java index 7f46f049..77dcd5f9 100644 --- a/source/net/filebot/util/FileSet.java +++ b/source/net/filebot/util/FileSet.java @@ -49,11 +49,11 @@ public class FileSet extends AbstractSet { } public boolean add(File e) { - return add(getPath(e)); + return add(e.toPath()); } public boolean add(String e) { - return add(getPath(e)); + return add(Paths.get(e)); } private boolean contains(Path e, int depth) { @@ -160,7 +160,7 @@ public class FileSet extends AbstractSet { public void load(File f) throws IOException { for (String path : readLines(f)) { try { - add(Paths.get(path)); + add(path); } catch (InvalidPathException e) { debug.warning(e::toString); } diff --git a/source/net/filebot/util/FileUtilities.java b/source/net/filebot/util/FileUtilities.java index 846cf29b..c2bbf75d 100644 --- a/source/net/filebot/util/FileUtilities.java +++ b/source/net/filebot/util/FileUtilities.java @@ -47,6 +47,7 @@ import java.util.TreeMap; import java.util.TreeSet; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collector; import java.util.stream.Stream; import org.apache.commons.io.FileUtils; @@ -186,22 +187,26 @@ public final class FileUtilities { private static final String WIN_THUMBNAIL_STORE = "Thumbs.db"; private static final String MAC_THUMBNAIL_STORE = ".DS_Store"; - public static boolean isThumbnailStore(File f) { - return MAC_THUMBNAIL_STORE.equals(f.getName()) || WIN_THUMBNAIL_STORE.equalsIgnoreCase(f.getName()); + public static boolean isThumbnailStore(File file) { + return MAC_THUMBNAIL_STORE.equals(file.getName()) || WIN_THUMBNAIL_STORE.equalsIgnoreCase(file.getName()); } - public static byte[] readFile(File source) throws IOException { - return Files.readAllBytes(source.toPath()); + public static byte[] readFile(File file) throws IOException { + return Files.readAllBytes(file.toPath()); } - public static List readLines(File file) throws IOException { - try (BufferedReader reader = new BufferedReader(new UnicodeReader(new BufferedInputStream(new FileInputStream(file), BUFFER_SIZE), false, UTF_8), BUFFER_SIZE)) { - return reader.lines().collect(toList()); + public static R readLines(File file, Collector collector) throws IOException { + try (BufferedReader reader = new BufferedReader(new UnicodeReader(new ByteArrayInputStream(readFile(file)), false, UTF_8))) { + return reader.lines().collect(collector); } } + public static List readLines(File file) throws IOException { + return readLines(file, toList()); + } + public static String readTextFile(File file) throws IOException { - return String.join(System.lineSeparator(), readLines(file)); + return readLines(file, joining(System.lineSeparator())); } public static File writeFile(ByteBuffer data, File destination) throws IOException {