2014-02-18 5 views
0

그래서 cmd 프로그램 CD를 사용하여 Java 프로그램이 Java 프로그램의 원본 폴더를 반환하는 동안 생각했습니다. 이제 String을 파싱하고 사용자의 사용자 이름을 가져올 수 있어야합니다. 여기에 의미하는 바가 있습니다.Java 파싱 및 변경 CD

아래 코드가 작동하는 경우 C : \ Users \ Bob \ Desktop \ newfolder \ JavaProgs \ prog1 ... 위의 사용자 이름 Bob과 같은 동적 변수를 문자열에서 구문 분석하려면 어떻게해야합니까?

public static void cdir() throws IllegalCommandException { 
     try{ 
      String command = "cd"; 
      String s = get_commandline_results(command); 
      String[] temp1 = s.split("\n"); 
      LinkedList<String> temp2 = new LinkedList<String>(Arrays.asList(temp1)); 
      System.out.println(temp2.get(0)); 
      filePath = temp2.get(0); 
     } 
     catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 
    public static String get_commandline_results(String cmd) 
     throws IOException, InterruptedException, IllegalCommandException{ 

     if (!authorizedCommand(cmd)) { 
      throw new IllegalCommandException(); 
     } 
     String result = ""; 
     final Process p = Runtime.getRuntime().exec(String.format("cmd /c %s", cmd)); 
     final ProcessResultReader stderr = new ProcessResultReader(p.getErrorStream(), "STDERR"); 
     final ProcessResultReader stdout = new ProcessResultReader(p.getInputStream(), "STDOUT"); 
     stderr.start(); 
     stdout.start(); 
     final int exitValue = p.waitFor(); 
     if (exitValue == 0){ 
      result = stdout.toString(); 
     } 
     else{ 
      result = stderr.toString(); 
     } 
     return result; 
    } 
    public static boolean authorizedCommand(String cmd){ 
     if (cmd.equals("cd")) 
      return true; 
     return false; 
    } 
+0

을이 종속 높은 배포합니다. –

+0

알아 내고 싶은 사용자 이름 인 경우 더 좋은 방법이 있습니다. UNIX뿐만 아니라 Windows는 이에 대한 환경 변수를 제공합니다. – qqilihq

+0

@SotiriosDelimanolis 잘 보입니다. 복제하려는 것은 설치 프로그램이 작동하는 방식입니다. 나는 실제로 어떻게되는지 모르지만, 당신은 저를 도울 수 있습니까? – Arc

답변

0

해결 방법 : System.getProperty ("user.name");

그래서 내가 할 것이 현재 로그인 한 사용자의 사용자 이름 인쇄하려면 : System.out.println(System.getProperty("user.name"));

: