これは私が達成しようとしていることです: JAVA プログラムからバッチ ファイルを実行します。バッチは、特定のフォルダー (フォルダー 'A' としましょう) に新しいファイルを作成します。新しいファイルが作成されると、JAVA プログラムは新しく作成されたファイルをフォルダー 'A' からフォルダー 'B' に移動します。
以下はコード スニペットです。
// Run a batch that creates a file
String[] cmd = new String[]{"cmd", "/C", "start /min" + batchFilePath + batchFileName};
Process proc = Runtime.getRuntime().exec(cmd);
proc.waitFor();
// Command in the batch file
dir c:\ > C:\Chen_Med\EDICron\EDIOUT\test.edi
exit
// Move the file created by batch
boolean result2= ediOutFile.renameTo(new File(processedFolder, ediOutFile.getName()));
上記のコードを実行すると、次のようになります。新しいファイルがフォルダー 'A' に作成されます。ただし、新しく作成されたファイルはフォルダー 'B' に移動されません。
分析:
上記のコードには構文上の問題はありません。ファイルを移動する代わりの方法を試しました。つまり、フォルダ「A」からフォルダ「B」にファイルを読み書きしてから、フォルダ「A」からファイルを削除します。フォルダ「B」に新しいファイルが作成されますが、ファイルはフォルダ「B」から削除されません。ファイルを移動しようとする別のプログラムを実行すると、上記のプログラムが実行された後、動作します。つまり、Runtime がファイルを制御しているという問題があるようです。
解決策を教えてください。私は解決策を見つけようとして一日を無駄にしました:(