OSDN Git Service

ディレクトリ処理中にエラーが発生しても例外をスローせず継続するようにする
authoryukihane <yukihane.feather@gmail.com>
Fri, 2 Sep 2011 02:19:30 +0000 (11:19 +0900)
committeryukihane <yukihane.feather@gmail.com>
Fri, 9 Sep 2011 11:38:57 +0000 (20:38 +0900)
frontend/src/yukihane/inqubus/filewatch/FileWatch.java

index 7c100fa..b133a1e 100644 (file)
@@ -13,6 +13,8 @@ import java.nio.file.WatchService;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 /**
  *
 
 /**
  *
@@ -20,10 +22,11 @@ import java.util.Set;
  */
 public final class FileWatch implements Runnable {
 
  */
 public final class FileWatch implements Runnable {
 
+    private static final Logger logger = Logger.getLogger(FileWatch.class.getName());
     private final Set<Path> files;
     private final Set<Path> directories;
 
     private final Set<Path> files;
     private final Set<Path> directories;
 
-    public FileWatch(Collection<Path> dirs) throws IOException {
+    public FileWatch(Collection<Path> dirs) {
         FileDir res = new FileDir();
         getFileDir(dirs, res);
 
         FileDir res = new FileDir();
         getFileDir(dirs, res);
 
@@ -37,22 +40,23 @@ public final class FileWatch implements Runnable {
         }
     }
 
         }
     }
 
-    private void getFileDir(Collection<Path> paths, FileDir res) throws IOException {
+    private void getFileDir(Iterable<Path> paths, FileDir result) {
         for (Path p : paths) {
         for (Path p : paths) {
-            getFileDir(p, res);
+            getFileDir(p, result);
         }
     }
 
         }
     }
 
-    private void getFileDir(Path p, FileDir res) throws IOException {
-
-        if (Files.isDirectory(p)) {
-            res.dirs.add(p);
-            DirectoryStream<Path> dir = Files.newDirectoryStream(p);
-            for (Path pp : dir) {
-                getFileDir(pp, res);
+    private void getFileDir(Path path, FileDir result) {
+        try {
+            if (Files.isDirectory(path)) {
+                result.dirs.add(path);
+                DirectoryStream<Path> dir = Files.newDirectoryStream(path);
+                getFileDir(dir, result);
+            } else if (Files.isRegularFile(path)) {
+                result.files.add(path);
             }
             }
-        } else if (Files.isRegularFile(p)) {
-            res.files.add(p);
+        } catch (IOException ex) {
+            logger.log(Level.WARNING, "パスの処理中にエラー: {0}", new Object[]{path});
         }
     }
 
         }
     }