From 783bba6b4877d6f41886f01cd2f144daa7378106 Mon Sep 17 00:00:00 2001 From: Sean Owen Date: Fri, 31 Jan 2014 13:33:21 +0000 Subject: [PATCH] Fix a few bugs from last NIO2 commit in resource translation --- .../com/google/zxing/HtmlAssetTranslator.java | 3 ++- .../zxing/StringsResourceTranslator.java | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/javase/src/main/java/com/google/zxing/HtmlAssetTranslator.java b/javase/src/main/java/com/google/zxing/HtmlAssetTranslator.java index d718b577a..dd24cf789 100644 --- a/javase/src/main/java/com/google/zxing/HtmlAssetTranslator.java +++ b/javase/src/main/java/com/google/zxing/HtmlAssetTranslator.java @@ -88,8 +88,9 @@ public final class HtmlAssetTranslator { DirectoryStream.Filter fileFilter = new DirectoryStream.Filter() { @Override public boolean accept(Path entry) { + String fileName = entry.getFileName().toString(); return Files.isDirectory(entry) && !Files.isSymbolicLink(entry) && - entry.getFileName().startsWith("html-") && !"html-en".equals(entry.getFileName().toString()); + fileName.startsWith("html-") && !"html-en".equals(fileName); } }; try (DirectoryStream dirs = Files.newDirectoryStream(assetsDir, fileFilter)) { diff --git a/javase/src/main/java/com/google/zxing/StringsResourceTranslator.java b/javase/src/main/java/com/google/zxing/StringsResourceTranslator.java index 00b81016c..9f9d7858a 100644 --- a/javase/src/main/java/com/google/zxing/StringsResourceTranslator.java +++ b/javase/src/main/java/com/google/zxing/StringsResourceTranslator.java @@ -16,9 +16,12 @@ package com.google.zxing; +import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStreamReader; import java.io.Writer; import java.net.URI; +import java.net.URLConnection; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.nio.file.DirectoryStream; @@ -180,7 +183,7 @@ public final class StringsResourceTranslator { "https://www.googleapis.com/language/translate/v2?key=" + API_KEY + "&q=" + URLEncoder.encode(english, "UTF-8") + "&source=en&target=" + language); - CharSequence translateResult = new String(Files.readAllBytes(Paths.get(translateURI)), StandardCharsets.UTF_8); + CharSequence translateResult = fetch(translateURI); Matcher m = TRANSLATE_RESPONSE_PATTERN.matcher(translateResult); if (!m.find()) { System.err.println("No translate result"); @@ -199,6 +202,20 @@ public final class StringsResourceTranslator { return translation; } + private static CharSequence fetch(URI translateURI) throws IOException { + URLConnection connection = translateURI.toURL().openConnection(); + connection.connect(); + StringBuilder translateResult = new StringBuilder(200); + try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) { + char[] buffer = new char[8192]; + int charsRead; + while ((charsRead = in.read(buffer)) > 0) { + translateResult.append(buffer, 0, charsRead); + } + } + return translateResult; + } + private static Map readLines(Path file) throws IOException { if (Files.exists(file)) { Map entries = new TreeMap<>();