現象は以下です。
//ImageMagickで画像変換
Runtime.getRuntime().exec(”convert -resize 100x100 a.gif b.gif”);
//
{
File fm = new File(”b.gif”);
System.out.println(”fm.exists()=”+fm.exists());
}
でb.gifというファイルはありませんと出ます。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/io/File.html
File (Java 2 プラットフォーム SE v1.4.0)
あの・・・Fileをnewしただけでは、物理的なファイルは作成されません。あくまでもFileのインスタンスができただけ。
createNewFile()メソッドで作成されます。
http://www.wakhok.ac.jp/JavaAppli/node23.html
プロセスからのストリーム
Javaと外部プロセスの同期は、なかなか取りづらいようです。
質問の内容とマッチしているかどうかわかりませんが、上記URLでは、DataInputStreamに出力が入ってくるまで待機するという方法で、同期処理を行っているようです。
ありがとうございます!
http://www.hatena.ne.jp/1090555940#
javaからコンソールコマンドなどでファイル作成すると、すぐにはディスクに書き込まれないのでしょうか?またそのブランク期間をなくし、すぐ書き込めるようにする方法を教.. - 人力検索はてな
URLはダミーです。
execで起動したプロセスが終了する前に処理が進んでしまっているために起きる現象ですね。
プロセスの終了を待ってから先に進むようにすればいいので,
Process p = Runtime.getRuntime().exec(...);
p.waitFor();
File fm = new File(”b.gif”);
System.out.println(”...” + fm.exists());
でOKだと思います。
ご参考になれば幸いです。ではでは。
ありがとうございます!
ありがとうございます!
Runtime.getRuntime().exec(”convert -resize 100x100 a.gif b.gif”);
でb.gifがあるはずなのですが。。。
Fileはfileの生存確認に使っています。。。