diff --git a/builtins/src/main/java/org/jline/builtins/ConfigurationPath.java b/builtins/src/main/java/org/jline/builtins/ConfigurationPath.java index 8a5147071..b33a6b705 100644 --- a/builtins/src/main/java/org/jline/builtins/ConfigurationPath.java +++ b/builtins/src/main/java/org/jline/builtins/ConfigurationPath.java @@ -9,6 +9,7 @@ package org.jline.builtins; import java.io.IOException; +import java.nio.file.Files; import java.nio.file.Path; public class ConfigurationPath { @@ -33,9 +34,9 @@ public ConfigurationPath(Path appConfig, Path userConfig) { */ public Path getConfig(String name) { Path out = null; - if (userConfig != null && userConfig.resolve(name).toFile().exists()) { + if (userConfig != null && Files.exists(userConfig.resolve(name))) { out = userConfig.resolve(name); - } else if (appConfig != null && appConfig.resolve(name).toFile().exists()) { + } else if (appConfig != null && Files.exists(appConfig.resolve(name))) { out = appConfig.resolve(name); } return out; @@ -62,10 +63,10 @@ public Path getUserConfig(String name) throws IOException { public Path getUserConfig(String name, boolean create) throws IOException { Path out = null; if (userConfig != null) { - if (!userConfig.resolve(name).toFile().exists() && create) { - userConfig.resolve(name).toFile().createNewFile(); + if (!Files.exists(userConfig.resolve(name)) && create) { + Files.createFile(userConfig.resolve(name)); } - if (userConfig.resolve(name).toFile().exists()) { + if (Files.exists(userConfig.resolve(name))) { out = userConfig.resolve(name); } } diff --git a/builtins/src/main/java/org/jline/builtins/Nano.java b/builtins/src/main/java/org/jline/builtins/Nano.java index 842ba3d50..765cea7c6 100644 --- a/builtins/src/main/java/org/jline/builtins/Nano.java +++ b/builtins/src/main/java/org/jline/builtins/Nano.java @@ -2105,7 +2105,7 @@ private boolean save(String name) throws IOException { return false; } } else if (!Files.exists(newPath)) { - newPath.toFile().createNewFile(); + Files.createFile(newPath); } Path t = Files.createTempFile("jline-", ".temp"); try (OutputStream os = Files.newOutputStream( diff --git a/console/src/main/java/org/jline/console/impl/ConsoleEngineImpl.java b/console/src/main/java/org/jline/console/impl/ConsoleEngineImpl.java index d8e1a0944..f8f0cf1b5 100644 --- a/console/src/main/java/org/jline/console/impl/ConsoleEngineImpl.java +++ b/console/src/main/java/org/jline/console/impl/ConsoleEngineImpl.java @@ -245,7 +245,7 @@ public Map scripts() { } } for (Path p : scripts) { - String name = p.toFile().getName(); + String name = p.getFileName().toString(); int idx = name.lastIndexOf("."); out.put(name.substring(0, idx), name.substring(idx + 1).equals(scriptExtension)); } @@ -395,7 +395,7 @@ public ScriptFile(String command, String cmdLine, String[] args) { for (String e : scriptExtensions()) { String file = command + "." + e; Path path = Paths.get(p, file); - if (path.toFile().exists()) { + if (Files.exists(path)) { script = path; scriptExtension(command); found = true; @@ -959,7 +959,7 @@ private Object slurpcmd(CommandInput input) { : engine.getSerializationFormats().get(0); try { Path path = Paths.get(arg); - if (path.toFile().exists()) { + if (Files.exists(path)) { if (!format.equals(SLURP_FORMAT_TEXT)) { out = slurp(path, encoding, format); } else { diff --git a/demo/src/main/java/org/apache/felix/gogo/jline/Posix.java b/demo/src/main/java/org/apache/felix/gogo/jline/Posix.java index d14807a67..b9f808c9a 100644 --- a/demo/src/main/java/org/apache/felix/gogo/jline/Posix.java +++ b/demo/src/main/java/org/apache/felix/gogo/jline/Posix.java @@ -1363,7 +1363,7 @@ protected Map readAttributes(Path path) { } } attrs.computeIfAbsent("isExecutable", s -> Files.isExecutable(path)); - attrs.computeIfAbsent("permissions", s -> getPermissionsFromFile(path.toFile())); + attrs.computeIfAbsent("permissions", s -> getPermissionsFromFile(path)); return attrs; } } @@ -2138,27 +2138,19 @@ private static boolean isWindowsExecutable(String fileName) { * the file is readable/writable/executable. If so, then all the * relevant permissions are set (i.e., owner, group and others) */ - private static Set getPermissionsFromFile(File f) { - Set perms = EnumSet.noneOf(PosixFilePermission.class); - if (f.canRead()) { - perms.add(PosixFilePermission.OWNER_READ); - perms.add(PosixFilePermission.GROUP_READ); - perms.add(PosixFilePermission.OTHERS_READ); - } - - if (f.canWrite()) { - perms.add(PosixFilePermission.OWNER_WRITE); - perms.add(PosixFilePermission.GROUP_WRITE); - perms.add(PosixFilePermission.OTHERS_WRITE); - } - - if (f.canExecute() || (OSUtils.IS_WINDOWS && isWindowsExecutable(f.getName()))) { - perms.add(PosixFilePermission.OWNER_EXECUTE); - perms.add(PosixFilePermission.GROUP_EXECUTE); - perms.add(PosixFilePermission.OTHERS_EXECUTE); + private static Set getPermissionsFromFile(Path f) { + try { + Set perms = Files.getPosixFilePermissions(f); + if (OSUtils.IS_WINDOWS && isWindowsExecutable(f.getFileName().toString())) { + perms = new HashSet<>(perms); + perms.add(PosixFilePermission.OWNER_EXECUTE); + perms.add(PosixFilePermission.GROUP_EXECUTE); + perms.add(PosixFilePermission.OTHERS_EXECUTE); + } + return perms; + } catch (IOException e) { + throw new RuntimeException(e); } - - return perms; } public static Map getLsColorMap(CommandSession session) { diff --git a/groovy/src/main/groovy/org/jline/groovy/Utils.groovy b/groovy/src/main/groovy/org/jline/groovy/Utils.groovy index 97ad2ec79..35f20153b 100644 --- a/groovy/src/main/groovy/org/jline/groovy/Utils.groovy +++ b/groovy/src/main/groovy/org/jline/groovy/Utils.groovy @@ -11,6 +11,7 @@ package org.jline.groovy import org.codehaus.groovy.runtime.HandleMetaClass import org.codehaus.groovy.runtime.typehandling.GroovyCastException +import java.nio.file.Files import java.nio.file.Path import org.jline.script.GroovyEngine.Format import groovy.json.JsonOutput @@ -62,9 +63,9 @@ class Utils { static void persist(Path file, Object object, Format format) { if (format == Format.JSON) { - file.toFile().write(JsonOutput.toJson(object)) + Files.writeString(file, JsonOutput.toJson(object)) } else if (format == Format.NONE) { - file.toFile().write(toString(object)) + Files.writeString(file, toString(object)) } else { throw new IllegalArgumentException() } diff --git a/reader/src/main/java/org/jline/reader/impl/history/DefaultHistory.java b/reader/src/main/java/org/jline/reader/impl/history/DefaultHistory.java index 90a9b9a3c..d2ab0ace8 100644 --- a/reader/src/main/java/org/jline/reader/impl/history/DefaultHistory.java +++ b/reader/src/main/java/org/jline/reader/impl/history/DefaultHistory.java @@ -200,7 +200,7 @@ public void purge() throws IOException { public void write(Path file, boolean incremental) throws IOException { Path path = file != null ? file : getPath(); if (path != null && Files.exists(path)) { - path.toFile().delete(); + Files.deleteIfExists(path); } internalWrite(path, incremental ? getLastLoaded(path) : 0); }