2010-04-22 4 views

Odpowiedz

13

Dlaczego chcesz używać wiersza poleceń? FYI, są wbudowane niezależne od platformy klasy File.

http://www.exampledepot.com/egs/java.io/deletefile.html
http://www.roseindia.net/java/beginners/java-create-directory.shtml

katalogu Producent:

new File("dir path").mkdir(); 

usunąć katalogu:

new File("dir path").delete(); 

'nowy plik' jest nieco mylące, nie jest faktycznie tworzenia katalog lub plik. Tworzy zasób haseł Java, który można wykorzystać do zapytania lub działania na istniejącym zasobie systemu plików lub utworzyć nowy na żądanie. W przeciwnym razie użyj polecenia Runtime.getRuntime().exec("command line here") do korzystania z wiersza poleceń (niezalecane !!).

Edit: załatwione problem plakat pytanie ma:

String envp[] = new String[1]; 
envp[0] = "PATH=" + System.getProperty("java.library.path"); 
Runtime.getRuntime().exec("command line here", envp); 

Uwaga wkładanie envp do rozmowy exec(..) metoda, która jest w zasadzie PATH zmienna ze środowiska.

+1

thnxs, Ten obiekt Runtime jest tym, czego szukałem. Po uruchomieniu tego kodu: Runtime.getRuntime(). Exec ("mkdir blah"); wyrzuć wyjątek, java.io.IOException: Nie można uruchomić programu "mkdir": CreateProcess error = 2, System nie może znaleźć określonego pliku –

3

Najlepiej nie jest, ale raczej znaleźć czystą funkcję API Java, która to robi. Jest czystszy, łatwiejszy do zrozumienia i mniej podatny na błędy. Jest to również jedyny sposób na zrobienie Java, która jest zapisywana raz uruchomiona wszędzie. Gdy wywołasz polecenia powłoki, jesteś przywiązany do tej powłoki.

W twoim przypadku szukasz klasy java.io.File, a szczególnie metod mkdir i delete.

4

Jako drugi wspomniano, nie należy tego robić na proste zarządzanie plikami. Ale aby go wymienić: API Java ma klasy o nazwie Runtime, który pozwala wywołań systemowych ... na przykład:

Runtime.getRuntime().exec("some_command"); 
3

Dla porównania osób potykając na to pytanie i zastanawiasz się, dlaczego Runtime.getRuntime().exec("mkdir foo") nie działa nawet wtedy, gdy Włączając środowisko zgodnie z odpowiedzią Chrisa Dennetta, najbardziej prawdopodobnym powodem jest to, że nie masz w systemie programu o nazwie "mkdir". Podczas gdy większość systemów uniksowych ma program o tej nazwie, nie jest absolutnie konieczne, aby je miały, a Windows go nie ma, ponieważ w obu przypadkach powłoka interpretuje to polecenie, zamiast przekazywać je do program zewnętrzny.

Aby to działało, spróbuj ... exec ("cmd /c mkdir foo") dla systemu Windows NT (lub "command /c mkdir foo" dla rodziny Windows 95) lub exec ("sh -c \"mkdir foo\"") dla systemu Unix.

Fakt, że nie jest to niezależny od platformy sposób, jest kolejnym powodem, dla którego należy preferować interfejsy API języka Java do wykonywania zadania.

0

Witam Zgadzam się na to, że nie było to niezależne od platformy, ale tylko do testowania aplikacji musiałem z niej korzystać. Rozwiązanie w moim przypadku dla Runtime.getRuntime(). Exec ("moja_nazwa_polecenia"); za nie działa to musiałem podać pełną ścieżkę do gdzie/sh plik wsadowy/wykonywalny był tj.

Runtime.getRuntime() exec ("/ d/temp/bin/mybatfile");