diff --git a/langx-java/src/main/java/com/jn/langx/util/io/file/FilePermission.java b/langx-java/src/main/java/com/jn/langx/util/io/file/FilePermission.java index e7ea9ebf1..65f2ff2b1 100644 --- a/langx-java/src/main/java/com/jn/langx/util/io/file/FilePermission.java +++ b/langx-java/src/main/java/com/jn/langx/util/io/file/FilePermission.java @@ -1,6 +1,8 @@ package com.jn.langx.util.io.file; +import com.jn.langx.util.Radixs; + import java.util.HashSet; import java.util.LinkedList; import java.util.List; @@ -97,6 +99,12 @@ public boolean isIn(int mask) { return (mask & val) == val; } + /** + * 根据 unix 权限码转换成响应的权限,参数是 10进制的 + * + * @param mask + * @return + */ public static Set fromMask(int mask) { final List perms = new LinkedList(); for (FilePermission p : FilePermission.values()) { @@ -107,6 +115,12 @@ public static Set fromMask(int mask) { return new HashSet(perms); } + /** + * 转换为 unix 权限码,返回数据是 10进制的 + * + * @param perms + * @return + */ public static int toMask(Set perms) { int mask = 0; for (FilePermission p : perms) { @@ -115,4 +129,19 @@ public static int toMask(Set perms) { return mask; } + public static String toOctal(int permissions) { + return toOctal(fromMask(permissions)); + } + + public static String toOctal(Set permissions) { + return Radixs.toOtc(toMask(permissions)); + } + + public static String toBinary(int permissions){ + return toBinary(fromMask(permissions)); + } + + public static String toBinary(Set permissions) { + return Radixs.toBinary(toMask(permissions)); + } } \ No newline at end of file diff --git a/langx-java/src/main/java/com/jn/langx/util/io/file/UnixFileAccessMode.java b/langx-java/src/main/java/com/jn/langx/util/io/file/UnixFileAccessMode.java index 500be7d35..c285646df 100644 --- a/langx-java/src/main/java/com/jn/langx/util/io/file/UnixFileAccessMode.java +++ b/langx-java/src/main/java/com/jn/langx/util/io/file/UnixFileAccessMode.java @@ -10,6 +10,10 @@ import java.util.regex.Pattern; +/** + * @see FilePermission + */ +@Deprecated public class UnixFileAccessMode { private static final Pattern PATTERN = Pattern.compile("^[01]+$"); private static final char TRUE = '1'; diff --git a/langx-java/src/test/java/com/jn/langx/test/util/io/UnixFileAccessModeTests.java b/langx-java/src/test/java/com/jn/langx/test/util/io/UnixFileAccessModeTests.java index 956339cee..146304d51 100644 --- a/langx-java/src/test/java/com/jn/langx/test/util/io/UnixFileAccessModeTests.java +++ b/langx-java/src/test/java/com/jn/langx/test/util/io/UnixFileAccessModeTests.java @@ -1,13 +1,20 @@ package com.jn.langx.test.util.io; +import com.jn.langx.text.StringTemplates; +import com.jn.langx.util.io.file.FilePermission; import com.jn.langx.util.io.file.UnixFileAccessMode; import org.junit.Test; +import java.util.Set; + public class UnixFileAccessModeTests { @Test public void test() { showMode(UnixFileAccessMode.create(509)); showMode(UnixFileAccessMode.create(493)); + showMode(UnixFileAccessMode.create(0755)); + + System.out.println(StringTemplates.formatWithPlaceholder("binaryMode:{}, octalMode:{}", FilePermission.toBinary(0755),FilePermission.toOctal(0755))); } private void showMode(UnixFileAccessMode accessMode){