diff --git a/javase/src/main/java/com/google/zxing/HtmlAssetTranslator.java b/javase/src/main/java/com/google/zxing/HtmlAssetTranslator.java index 1912233e8..0661134a4 100644 --- a/javase/src/main/java/com/google/zxing/HtmlAssetTranslator.java +++ b/javase/src/main/java/com/google/zxing/HtmlAssetTranslator.java @@ -33,6 +33,8 @@ import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -86,7 +88,12 @@ public final class HtmlAssetTranslator { FileFilter fileFilter = new FileFilter() { @Override public boolean accept(File file) { - return file.isDirectory() && file.getName().startsWith("html-") && !"html-en".equals(file.getName()); + Path path = file.toPath(); + return + Files.isDirectory(path) && + !Files.isSymbolicLink(path) && + file.getName().startsWith("html-") && + !"html-en".equals(file.getName()); } }; for (File languageDir : assetsDir.listFiles(fileFilter)) { diff --git a/javase/src/main/java/com/google/zxing/StringsResourceTranslator.java b/javase/src/main/java/com/google/zxing/StringsResourceTranslator.java index 67f1b1361..2626d85c8 100644 --- a/javase/src/main/java/com/google/zxing/StringsResourceTranslator.java +++ b/javase/src/main/java/com/google/zxing/StringsResourceTranslator.java @@ -17,20 +17,18 @@ package com.google.zxing; import java.io.BufferedReader; -import java.io.BufferedWriter; import java.io.File; import java.io.FileFilter; -import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; -import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; @@ -56,7 +54,6 @@ public final class StringsResourceTranslator { private static final String API_KEY = System.getProperty("translateAPI.key"); - private static final Charset UTF8 = Charset.forName("UTF-8"); private static final Pattern ENTRY_PATTERN = Pattern.compile("([^<]+)"); private static final Pattern STRINGS_FILE_NAME_PATTERN = Pattern.compile("values-(.+)"); private static final Pattern TRANSLATE_RESPONSE_PATTERN = Pattern.compile("translatedText\":\\s*\"([^\"]+)\""); @@ -97,7 +94,11 @@ public final class StringsResourceTranslator { File[] translatedValuesDirs = resDir.listFiles(new FileFilter() { @Override public boolean accept(File file) { - return file.isDirectory() && VALUES_DIR_PATTERN.matcher(file.getName()).matches(); + Path path = file.toPath(); + return + Files.isDirectory(path) && + !Files.isSymbolicLink(path) && + VALUES_DIR_PATTERN.matcher(file.getName()).matches(); } }); for (File translatedValuesDir : translatedValuesDirs) { @@ -129,7 +130,7 @@ public final class StringsResourceTranslator { resultTempFile.deleteOnExit(); boolean anyChange = false; - try (Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(resultTempFile), UTF8))) { + try (Writer out = Files.newBufferedWriter(resultTempFile.toPath(), StandardCharsets.UTF_8)) { out.write("\n"); out.write(APACHE_2_LICENSE); out.write("\n"); @@ -210,7 +211,7 @@ public final class StringsResourceTranslator { URLConnection connection = translateURL.openConnection(); connection.connect(); StringBuilder translateResult = new StringBuilder(200); - try (Reader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), UTF8))) { + try (Reader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) { char[] buffer = new char[1024]; int charsRead; while ((charsRead = in.read(buffer)) > 0) { @@ -225,7 +226,7 @@ public final class StringsResourceTranslator { if (!file.exists()) { return entries; } - try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), UTF8))) { + try (BufferedReader reader = Files.newBufferedReader(file.toPath(), StandardCharsets.UTF_8)) { CharSequence line; while ((line = reader.readLine()) != null) { Matcher m = ENTRY_PATTERN.matcher(line);