ファイルをコピーしようとしています。ここにソースがあります。注:des
はURLを含む文字列変数です。getRuntime()を使用したファイルコピー。exec()
Process process = Runtime.getRuntime().
exec("cmd.exe\t/c\tcopy\t"+source+"\t"+des);
誰も私にそれが動作しない理由を教えてもらえますか?
ファイルをコピーしようとしています。ここにソースがあります。注:des
はURLを含む文字列変数です。getRuntime()を使用したファイルコピー。exec()
Process process = Runtime.getRuntime().
exec("cmd.exe\t/c\tcopy\t"+source+"\t"+des);
誰も私にそれが動作しない理由を教えてもらえますか?
Runtime.exec
私は、文字列をコマンドプロセッサーcmd.exe
に送信すると思います。これはcmd.exe
を実行していて、別のcmd.exe
をその内部に実行し、引数を渡します。私はそれをテストするためのWindowsマシンを持っていませんが(神に感謝します)、私はコマンドラインとして引数を実行するように指示するための引数がcmd.exe
にあると思います。
FileUtils.copyFile()
を使用しないのはなぜですか?
私はあなたがFileUtils.copyFile()を使用する必要があると思いますが、とにかくこれを試してください。代わりにsingle string
array
を構築し、exec
にそれを渡すよりもとしてあなたのコマンドを渡すの
String[] command = new String[5];
command[0] = "cmd";
command[1] = "/c";
command[2] = "copy";
command[3] = "test.java";
command[4] = "D:";
Process p = Runtime.getRuntime().exec (command);
。
私は私のためにうまく働いたこの
String command = "cmd /c copy test.java D:";
を試してみました。
アドバイス:
Process
を構築するためにProcessBuilder
を使用してください。+1いい記事。 – RanRag
@RanRag私は 'Process'クラスを自分で使っていません(私は純粋なJava '(1)を保つのが好きですが)' 'Java'を作成するための単一行呼び出しを認識するのに十分な問題を見ました。 「プロセス」は、一般に、この記事で概説された理由で失敗する。適切に使用するのは難しいクラスです。 1)それは私に思い出させる、あなたの答えを上げることを忘れてしまった。 :) –
エラーストリームを読み取ります。それは答えを含むでしょう。 – BalusC
'exec("コピー元 "+ソース+"デス "+デ);'? –
Apache Commonsのファイルコピーhttp://commons.apache.org/io/apidocs/org/apache/commons/io/FileUtils.html –