人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javaからコンソールコマンドなどでファイル作成すると、すぐにはディスクに書き込まれないのでしょうか?またそのブランク期間をなくし、すぐ書き込めるようにする方法を教えてください。
現象は以下です。

//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というファイルはありませんと出ます。


●質問者: kunitz
●カテゴリ:コンピュータ
✍キーワード:FM GIF ImageMagick Java Out
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● actual
●20ポイント

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()メソッドで作成されます。

◎質問者からの返答

ありがとうございます!

Runtime.getRuntime().exec(”convert -resize 100x100 a.gif b.gif”);

でb.gifがあるはずなのですが。。。

Fileはfileの生存確認に使っています。。。


2 ● daxnaya
●20ポイント

http://www.wakhok.ac.jp/JavaAppli/node23.html

プロセスからのストリーム

Javaと外部プロセスの同期は、なかなか取りづらいようです。

質問の内容とマッチしているかどうかわかりませんが、上記URLでは、DataInputStreamに出力が入ってくるまで待機するという方法で、同期処理を行っているようです。

◎質問者からの返答

ありがとうございます!


3 ● yoichiro
●20ポイント

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だと思います。

ご参考になれば幸いです。ではでは。

◎質問者からの返答

ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ