fix: list dir 添加 文件 size type 等属性

This commit is contained in:
zhangshuai
2024-09-04 18:11:56 +08:00
parent c861efd75d
commit b940421c69

View File

@@ -306,7 +306,7 @@ public class AdbUtil {
}
String statFilePath = isDir ? Paths.get(path).resolve(name).toString() : path;
String statCommand = "shell stat -c \"'%N %a %X %Y'\" " + statFilePath;
String statCommand = "shell stat -c \"'%N %A %g %u %s %a %X %Y'\" " + statFilePath;
futureList.add(
CompletableFuture.supplyAsync(() -> {
String statResult = CommandExec.exec(AdbCommandBuilder.builder()
@@ -318,15 +318,24 @@ public class AdbUtil {
List<String> list = Arrays.asList(statResult.split("\\s+"));
Collections.reverse(list);
String fullName = list.get(3).replaceAll("'|`", "");
String fullName = list.get(7).replaceAll("'|`", "");
Map<String, Object> relMap = T.MapUtil.newHashMap();
relMap.put("name", name);
relMap.put("value", T.MapUtil.builder()
.put("id", Base32Codec.Base32Encoder.ENCODER.encode(fullName.getBytes()))
.put("fullName", fullName)
.put("gid", Long.parseLong(list.get(5)))
.put("uid", Long.parseLong(list.get(4)))
.put("size", Long.parseLong(list.get(3)))
.put("permissions", Long.parseLong(list.get(2)))
.put("cts", Long.parseLong(list.get(1)))
.put("uts", Long.parseLong(list.get(0)))
.put("isDir", list.get(6).startsWith("d"))
.put("isBlk", list.get(6).startsWith("b"))
.put("isFifo", list.get(6).startsWith("p"))
.put("isLink", list.get(6).startsWith("l"))
.put("isReg", list.get(6).startsWith("-"))
.put("isSock", list.get(6).startsWith("s"))
.build());
return relMap;
}, getThreadPool())