配列に要素を追加したようなやつをサックリ作る
なんかこういうコードがあって冗長だな~ と思っていたんですが
public static Optional<Path> which(String command) {
final String pathString = System.getenv("PATH");
final String[] pathArray = pathString.split(":");
final List<String> pathList = Arrays.stream(pathArray).collect(Collectors.toList());
pathList.add("/usr/local/bin/"); // Add /usr/local/bin/ to PATH
for (String pathElement: pathList) {
final Path path = Paths.get(pathElement, command);
if (path.toFile().canExecute()) {
return Optional.of(path);
}
}
return Optional.empty();
}
なんか以下のように書けばいいね、ということになりました。 guava 依存だけど、わりと全面的に guava 依存してるのでまあいいか、的な。
public static Optional<Path> which(String command) {
final String pathString = System.getenv("PATH");
final String[] pathList = ObjectArrays.concat(pathString.split(":"), "/usr/local/bin/");
for (String pathElement : pathList) {
final Path path = Paths.get(pathElement, command);
if (path.toFile().canExecute()) {
return Optional.of(path);
}
}
return Optional.empty();
}
社内でこういう Java の質問なげるとササッと返ってくるようになってきてて便利。
Published: 2015-05-07(Thu) 23:24