Skip to content

Commit

Permalink
* 支持文件权限
Browse files Browse the repository at this point in the history
  • Loading branch information
fjn committed Feb 19, 2021
1 parent 6a93fb6 commit dbb3df8
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -97,6 +99,12 @@ public boolean isIn(int mask) {
return (mask & val) == val;
}

/**
* 根据 unix 权限码转换成响应的权限,参数是 10进制的
*
* @param mask
* @return
*/
public static Set<FilePermission> fromMask(int mask) {
final List<FilePermission> perms = new LinkedList<FilePermission>();
for (FilePermission p : FilePermission.values()) {
Expand All @@ -107,6 +115,12 @@ public static Set<FilePermission> fromMask(int mask) {
return new HashSet<FilePermission>(perms);
}

/**
* 转换为 unix 权限码,返回数据是 10进制的
*
* @param perms
* @return
*/
public static int toMask(Set<FilePermission> perms) {
int mask = 0;
for (FilePermission p : perms) {
Expand All @@ -115,4 +129,19 @@ public static int toMask(Set<FilePermission> perms) {
return mask;
}

public static String toOctal(int permissions) {
return toOctal(fromMask(permissions));
}

public static String toOctal(Set<FilePermission> permissions) {
return Radixs.toOtc(toMask(permissions));
}

public static String toBinary(int permissions){
return toBinary(fromMask(permissions));
}

public static String toBinary(Set<FilePermission> permissions) {
return Radixs.toBinary(toMask(permissions));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down
Original file line number Diff line number Diff line change
@@ -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){
Expand Down

0 comments on commit dbb3df8

Please sign in to comment.