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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:actual No.1

回答回数610ベストアンサー獲得回数1

ポイント20pt

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

id:kunitz

ありがとうございます!

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

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

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

2004/07/23 14:09:54
id:daxnaya No.2

回答回数5ベストアンサー獲得回数0

ポイント20pt

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

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

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

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

id:kunitz

ありがとうございます!

2004/07/23 14:10:21
id:yoichiro No.3

回答回数10ベストアンサー獲得回数0

ポイント20pt

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

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

id:kunitz

ありがとうございます!

2004/07/23 14:11:01

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません