2013-11-01 1 views
-1

안녕하세요, 나는 JAVA를 통해 특정 파일의 사용자/그룹을 변경해야합니다. 나는 거의 동일한 Posix 예제 인 evrywhere를 보았습니다.int 대신 chown 용 문자열이있는 JNA?

public interface POSIX extends Library { 
    public int chmod(String filename, int mode); 
    public int chown(String filename, int userId, int groupId); 
    } 

이 가진 문제를 해결하기 위해 PID와 GID를 알고있다, 그러나 당신이 그들을 얻을 수 런타임 throught를 통과하고, 그래서 난 정말 대한 Chown 방법의 사용을 볼 수 없습니다있을 것이라는 점을 할 것입니다. 나는 나에게 파일의 806,789,808 806,789,776 DOR 사용자/그룹을 보여줍니다 LS -l 사용자 및 그룹에 대한 문자열 매개 변수를 통과 한 후이

public interface POSIX extends Library { 
    public int chmod(String filename, int mode); 
    public int chown(String filename, int userId, int groupId); 
    public int chown(String filename, String user, String group); 
    } 

하지만 시도. 그래서 사용자와 그룹을 문자열로 전달하는 방법이 있습니까?

답변

0

문자열로 전달하는 가장 간단한 방법은, 시스템 호출을하기 전에 ID의 이름을 찾아 볼 것입니다 chown가 무엇

Runtime.exec(new String[] { "chown", user, filename }); 

이다.

+0

감사합니다.하지만 왜 그런 식으로 끝내야합니까? – user2548720

+0

및 btw 내가 자바 6 및 exec 매개 변수로 3 문자열을 가져 오지 않습니다. – user2548720

+0

@ user2548720 OS는 숫자 만 처리합니다. 디스크의 레코드에는 숫자 만 있습니다. 숫자의 이름으로의 변환은 도구에 대한 작업입니다. Java 7은 varargs를 가지고 있지 않습니다. –