Преглед на файлове

fix: todo-打开文件夹重试

Suuuuuukang преди 1 месец
родител
ревизия
f0d4740dce
променени са 1 файла, в които са добавени 25 реда и са изтрити 2 реда
  1. 25 2
      taais-modules/taais-biz/src/main/java/com/taais/biz/controller/TargetIdentificationSubtaskDetailsController.java

+ 25 - 2
taais-modules/taais-biz/src/main/java/com/taais/biz/controller/TargetIdentificationSubtaskDetailsController.java

@@ -1,8 +1,10 @@
 package com.taais.biz.controller;
 
 import java.awt.*;
+import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -286,9 +288,30 @@ public class TargetIdentificationSubtaskDetailsController extends BaseController
     public CommonResult<Void> openDir(String directory) throws IOException {
         log.error("check dir: {}, {}", directory, profile + "/task" + directory);
         //Desktop.getDesktop().open(new File(profile + "/task" + directory));
-        String dir = profile + "/task" + directory;
-        ProcessBuilder pb = new ProcessBuilder("nautilus", dir);
+
+        String dir = profile + "/task" + directory + "/";
+        String command = "sudo xdg-open " + dir;
+        Runtime.getRuntime().exec(command);
+        log.error("try open: {}", command);
+
+        ProcessBuilder pb = new ProcessBuilder("sudo", "xdg-open", dir);
         Process p = pb.start();
+        // 读取错误流避免进程阻塞
+        try (BufferedReader errReader = new BufferedReader(new InputStreamReader(p.getErrorStream()))) {
+            String line;
+            while ((line = errReader.readLine()) != null) {
+                log.error("进程错误: {}", line);
+            }
+        }
+        pb = new ProcessBuilder("xdg-open", dir);
+        p = pb.start();
+        // 读取错误流避免进程阻塞
+        try (BufferedReader errReader = new BufferedReader(new InputStreamReader(p.getErrorStream()))) {
+            String line;
+            while ((line = errReader.readLine()) != null) {
+                log.error("进程错误: {}", line);
+            }
+        }
         return CommonResult.success();
     }