파일 복사가 안 돼요 ㅜㅜ
조회수 532회
try {
Runtime runByRoot = Runtime.getRuntime().exec("su -c \"cp -r /data/data/com.kakao.talk/databases /storage/emulated/0/database\"");
//BufferedReader reader = new BufferedReader(new InputStreamReader(getRoot3.getInputStream()));
runByRoot.waitFor();
File getFilePath = new File("/storage/emulated/0/database");
File[] filesList = getFilePath.listFiles();
for(i : filesList) {
replier.reply(filesList[i]);
}; replier.reply("실행 완료");
} catch(err) {
replier.reply(err);
};
//replier.reply 메소드는 인자값 출력해주는 메소드에요. 무시하셔도 돼요!
디렉토리를 복사하고 싶어서 짠 소스인데 오류도 안나고 틀린곳도 없는거 같은데 결론적으로 파일이 복사되어있지 않네요 ㅜㅜ. 혹시 제가 잘못 입력했을까봐 명령어 부분 그대로 복붙해서 터미널에서 실행해봤는데 터미널에서는 잘 되네요....
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
String test_cmd[] = new String[] {"test.sh", "1", "test"}; ProcessBuilder test_pb = new ProcessBuilder(test_cmd); Process test_p = test_pb.start(); int signal = test_p.waitFor();
자바로 터미널 명령을 수행할 때 한 문자열이 아니라 위처럼 문자열 배열로 분리해서 수행해보세요. 띄어쓰기 기준으로 분리하면 됩니다.
예전에 작업할 때 찾아봤었는데 한 문자열로 사용하면 제대로 수행되지 않는다는 얘기를 봤습니다. 실제로도 수행이 안 돼서 저도 문자열 배열로 사용했고요.
그래도 안 되면 waitFor() 호출 이후에
Process
의getInputStream()
이나getErrorStream()
을 사용해 출력을 확인해보세요.커맨드에 있는
|
를 인식하지 못 하는 문제도 있었고, 막 생각한대로 동작하진 않더라고요.-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력