このようにしてjavaでwww上の任意のファイルをダウンロードしたいのですが、

存在するURLであっても、時にレスポンスが帰ってこなくなり
何も例外を出すことなく
プロセスが永久にレスポンスを待ち続けることがあります。



以下の処理はThread化しているのですが

こういうとき、
一定時間経過したらプロセスを自動的に強制終了させる方法として、
できるだけ確実で安全な方法を教えてください。


FileOutputStream output=new FileOutputStream( file );

URL url = new URL( target );
Object content =null;
content = url.getContent();

if( content instanceof InputStream ) {
DataInputStream input= new DataInputStream( (InputStream)content ) ;
byte buf[]=new byte[256];
int len;
while((len=input.read(buf))!=-1){
output.write(buf,0,len);
}
output.flush();
output.close();
input.close();
}

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/10/22 10:06:31
  • 終了:2008/10/27 11:06:27

回答(1件)

id:newta No.1

newta回答回数68ベストアンサー獲得回数72008/10/22 10:51:31

ポイント60pt

URLConnectionを使用しているならば

下の設定でタイムアウト時間を設定できないでしょうか?

System.setProperty (

  "sun.net.client.defaultConnectTimeout" ,

  Integer.toString ( URLCONNECTION_TIMEOUT ) );

System.setProperty (

  "sun.net.client.defaultReadTimeout" ,

  Integer.toString( URLCONNECTION_TIMEOUT ) );


http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/net/properties.h...

id:TAK_TAK

一応、解決したと思います。

ありがとうございました

2008/10/27 11:06:20

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません