[tor-commits] [metrics-lib/master] Some read/write modernization of DescriptorReaderImpl.

karsten at torproject.org karsten at torproject.org
Tue Dec 20 08:03:34 UTC 2016


commit f0db82ad75a83d112100349cfdba0e8e7a753407
Author: iwakeh <iwakeh at torproject.org>
Date:   Tue Nov 8 18:02:25 2016 +0100

    Some read/write modernization of DescriptorReaderImpl.
---
 .../descriptor/impl/DescriptorReaderImpl.java      | 67 +++++++++-------------
 1 file changed, 28 insertions(+), 39 deletions(-)

diff --git a/src/main/java/org/torproject/descriptor/impl/DescriptorReaderImpl.java b/src/main/java/org/torproject/descriptor/impl/DescriptorReaderImpl.java
index 9adc446..cf2939a 100644
--- a/src/main/java/org/torproject/descriptor/impl/DescriptorReaderImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/DescriptorReaderImpl.java
@@ -18,14 +18,13 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.BufferedInputStream;
-import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
@@ -229,23 +228,23 @@ public class DescriptorReaderImpl implements DescriptorReader {
       if (historyFile == null || !historyFile.exists()) {
         return;
       }
+      List<String> lines = null;
       try {
-        BufferedReader br = new BufferedReader(new FileReader(
-            historyFile));
-        String line;
-        while ((line = br.readLine()) != null) {
-          if (!line.contains(" ")) {
-            log.warn("Unexpected line structure in old history: " + line);
-            continue;
-          }
-          long lastModifiedMillis = Long.parseLong(line.substring(0,
-              line.indexOf(" ")));
-          String absolutePath = line.substring(line.indexOf(" ") + 1);
-          this.excludedFilesBefore.put(absolutePath, lastModifiedMillis);
-        }
-        br.close();
+        lines = Files.readAllLines(historyFile.toPath(),
+            StandardCharsets.UTF_8);
       } catch (IOException | NumberFormatException e) {
-        log.warn("Trouble reading old history.", e);
+        log.warn("Trouble reading given history file {}.", historyFile, e);
+        return;
+      }
+      for (String line : lines) {
+        if (!line.contains(" ")) {
+          log.warn("Unexpected line structure in old history: {}", line);
+          continue;
+        }
+        long lastModifiedMillis = Long.parseLong(line.substring(0,
+            line.indexOf(" ")));
+        String absolutePath = line.substring(line.indexOf(" ") + 1);
+        this.excludedFilesBefore.put(absolutePath, lastModifiedMillis);
       }
     }
 
@@ -253,24 +252,23 @@ public class DescriptorReaderImpl implements DescriptorReader {
       if (historyFile == null) {
         return;
       }
-      try {
-        if (historyFile.getParentFile() != null) {
-          historyFile.getParentFile().mkdirs();
-        }
-        BufferedWriter bw = new BufferedWriter(new FileWriter(
-            historyFile));
+      if (historyFile.getParentFile() != null) {
+        historyFile.getParentFile().mkdirs();
+      }
+      try (BufferedWriter bw = Files.newBufferedWriter(historyFile.toPath(),
+          StandardCharsets.UTF_8)) {
         SortedMap<String, Long> newHistory = new TreeMap<>();
         newHistory.putAll(this.excludedFilesAfter);
         newHistory.putAll(this.parsedFilesAfter);
         for (Map.Entry<String, Long> e : newHistory.entrySet()) {
           String absolutePath = e.getKey();
-          long lastModifiedMillis = e.getValue();
-          bw.write(String.valueOf(lastModifiedMillis) + " " + absolutePath
-              + "\n");
+          String lastModifiedMillis = String.valueOf(e.getValue());
+          bw.write(lastModifiedMillis + " " + absolutePath);
+          bw.newLine();
         }
-        bw.close();
       } catch (IOException e) {
-        log.warn("Trouble writing new history.", e);
+        log.warn("Trouble writing new history file '{}'.",
+            historyFile, e);
       }
     }
 
@@ -395,16 +393,7 @@ public class DescriptorReaderImpl implements DescriptorReader {
 
     private List<Descriptor> readFile(File file) throws IOException,
         DescriptorParseException {
-      FileInputStream fis = new FileInputStream(file);
-      BufferedInputStream bis = new BufferedInputStream(fis);
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      int len;
-      byte[] data = new byte[1024];
-      while ((len = bis.read(data, 0, 1024)) >= 0) {
-        baos.write(data, 0, len);
-      }
-      bis.close();
-      byte[] rawDescriptorBytes = baos.toByteArray();
+      byte[] rawDescriptorBytes = Files.readAllBytes(file.toPath());
       return this.descriptorParser.parseDescriptors(rawDescriptorBytes,
           file.getName());
     }





More information about the tor-commits mailing list