X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Futil%2FFileUtils.java;h=3652448d24952cc30dc37ea7c1afae24a07a6cff;hb=f79386294ab0078db7bd88d294d646c990dcfbcf;hp=b81ec7159b098dbb28f734e85eb2414b66ad46e1;hpb=a40d1c1e510b8e68989ec46c46a1a7f4473981aa;p=jalview.git
diff --git a/src/jalview/util/FileUtils.java b/src/jalview/util/FileUtils.java
index b81ec71..3652448 100644
--- a/src/jalview/util/FileUtils.java
+++ b/src/jalview/util/FileUtils.java
@@ -2,6 +2,12 @@ package jalview.util;
import java.io.File;
import java.io.IOException;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.PathMatcher;
+import java.util.ArrayList;
+import java.util.List;
/**
* Miscellaneous file-related functions
@@ -37,6 +43,28 @@ public final class FileUtils
}
/**
+ * Answers the path to the folder containing the given executable file, by
+ * searching the PATH environment variable. Answers null if no such executable
+ * can be found.
+ *
+ * @param cmd
+ * @return
+ */
+ public static String getPathTo(String cmd)
+ {
+ String paths = System.getenv("PATH");
+ // backslash is to escape regular expression argument
+ for (String path : paths.split("\\" + File.pathSeparator))
+ {
+ if (getExecutable(cmd, path) != null)
+ {
+ return path;
+ }
+ }
+ return null;
+ }
+
+ /**
* A convenience method to create a temporary file that is deleted on exit of
* the JVM
*
@@ -53,4 +81,42 @@ public final class FileUtils
return f;
}
+ /**
+ * Answers a (possibly empty) list of file paths found by searching below
+ * from
that match the supplied regular expression
+ * pattern
. Results may include from
itself if it
+ * matches. If an exception occurs it is written to syserr and any results up
+ * to that point are returned. Note that the regular expression match applies
+ * to the whole path of any matched file.
+ *
+ * Because the whole directory tree below from
is searched, this
+ * method may be slow if used for a high level directory.
+ *
+ *
+ * Example: + * findMatchingPaths(".*/chimera.exe$", Paths.get("C:/Program Files")) + *+ * + * @param pattern + * @param from + * @return + * @see https://stackoverflow.com/questions/794381/how-to-find-files-that-match-a-wildcard-string-in-java/31685610#comment62441832_31685610 + */ + public static List