ファイル名を入れ替えるために次のコードを実行しようとしています。私はRuntime.exec
を使用しています。コードはIOException
をスローします。とにかくこれを修正するには?Runtime.execが動作しない
try {
Runtime.getRuntime().exec("file1=" + folderpath + " && file2=/mnt/sdcard/fsimages && temp=\"$(/system/xbin/mktemp -dp /mnt/sdcard)\" && /system/xbin/mv \"$file1\" $temp && /system/xbin/mv \"$file2\" \"$file1\" && /system/xbin/mv $temp/\"$file1\" \"$file2\"");
} catch (IOException e) {
e.printStackTrace();
return;
}
とエラー:
02-28 07:48:02.936: W/System.err(14399): java.io.IOException: Error running exec(). Command: [file1=/mnt/sdcard/fsimages_3, &&, file2=/mnt/sdcard/fsimages, &&, temp="$(/system/xbin/mktemp, -dp, /mnt/sdcard)", &&, /system/xbin/mv, "$file1", $temp, &&, /system/xbin/mv, "$file2", "$file1", &&, /system/xbin/mv, $temp/"$file1", "$file2"] Working Directory: null Environment: null
のRuntime.execは、すべての& &前と後昏睡を挿入しているのように見えます。問題のように見えるのはRuntime.exec& &です。なぜこうなった?どうすればこれを防ぐことができますか?
私は( 'Runtime.getRuntimeを試してみました) \t \t \t \t \t \t \t \t \t \t \t \t .exec( "/ binに/ SH、-C(FILE1 =" \t \t \t \t \t \t \t \t \t \t \t \t \t \t +フォルダパス \t \t \t \t \t \t \t \t \t \t \t \t \t \t + "&& file2 =/mnt/sdcard/fsimages && temp = \ "$(/ system/xbin/mktemp -dp/mnt/sdcard)\" &&/system/xbin/mv \ "$ fi $ file1 \ "$ file1 \" &&/system/xbin/mv $ temp/\ "$ file1 \" \ "$ file2 \") "); 'それはまだ働いていない。私はそれらの昏睡を取り除く方法が必要です。 –
'Runtime.exec'は文字列の中の' && 'を論理演算子' AND'とみなしていますか? –
'02-28 08:21:25.796:W/System.err(14673):java.io.IOException:exec()を実行中にエラーが発生しました。コマンドは次のようになります。コマンド:[/ bin/sh、-c、(file1 =/mnt/sdcard/fsimages_3、&&、file2 =/mnt/sdcard/fsimages、&&、temp = "$(/ system/xbin/mktemp、-dp、/etc/xbin/mv、 "$ file2"、 "$ file1"、&&、/ system/xbin/mv、/ etc/xbin/mv、 、$ temp/"$ file1"、 "$ file2")] Working Directory:null環境:null ' –