2013-07-14 6 views
-1

, 작동하지 않는 경우 다음 명령은 내가 터미널에서 그것을 실행할 때 완벽하게 작동된다getRuntime.exec()는 우분투 13.04

rm -f /home/folkman/Desktop/DimacsProba/* 

는 그러나, 나는 자바를 실행합니다. 내가 넷빈즈를 사용하고 내가 우분투의 이전 버전을 사용하는 경우, 그것은 일 :

 Runtime.getRuntime().exec("rm -f /home/folkman/Desktop/DimacsProba/*"); 

를 이제 우분투 13.04으로. 다음 중 아무 것도 작동하지 않습니다.

//1 
    Runtime.getRuntime().exec("rm -f /home/folkman/Desktop/DimacsProba/*"); 

//2 
    Runtime.getRuntime().exec(new String[]{"rm" , "-f", "/home/folkman/Desktop/DimacsProba/*"}); 

// 3 
ProcessBuilder pb= new ProcessBuilder("rm","/home/folkman/Desktop/DimacsProba/*"); 
Process p=pb.start(); 

아마도 우분투 때문이 아니지만 실제로는 알 수 없습니다. 도와주세요! 감사합니다.

+2

오류 메시지 시도 확장? – atamanroman

+2

Java API를 통해 파일을 삭제하지 않는 이유는 무엇입니까? –

+0

파일을 삭제하기 위해 쉘을 호출하는 데는 아무런 문제가 없지만이 방법은 이식성을 희생합니다. 더 나은 이식성을 위해, 그리고 사용 사례에 적합한 경우 Java 파일 API를 사용하여 디렉토리의 파일을 반복적으로 삭제할 수 있습니다. –

답변

6

와일드 카드는 쉘 기능이므로 exec를 사용하면 문자 그대로 사용됩니다. 당신이이 삭제됩니다 *라는 파일을 가지고,하지만 난 당신이 원하는 의심되는 경우 여기 쉘은 *

"sh", "-c", "rm -f /home/folkman/Desktop/DimacsProba/*" 
+1

작품, 고마워요! – user2581772

+0

@ user2581772 왼쪽의 체크를 클릭하여 답변을 수락 할 수 있습니다. –

관련 문제