1

URLConnectionから入力ストリームを取得する2回目のアクセス中に504例外を取得します。特定のURLにアクセスしているときにシステムを再起動すると正常に機能しますが、2回目にアクセスするとエラーが発生します。

ノート :

Using Tomcat 6, Java, JSP

以下のコード:

    OutputStream outStream = null;
    URLConnection uCon = null;

    InputStream is = null;
    try {
        URL Url;
        byte[] buf;
        int ByteRead, ByteWritten = 0;
        Url = new URL("www.sample.com/download/file.xml");
        outStream = new BufferedOutputStream(new FileOutputStream("/home/temp/myfile.xml"));

        uCon = Url.openConnection();
        is = uCon.getInputStream();
        buf = new byte[size];
        while ((ByteRead = is.read(buf)) != -1) {
            outStream.write(buf, 0, ByteRead);
            ByteWritten += ByteRead;
        }
        System.out.println("Downloaded Successfully.");
        is.close();
        outStream.close();
    } catch (Exception e) {
        System.out.println("Required File is not there  "+e.getMessage());            
    }
4

2 に答える 2

3

ストリームを読んだら、ストリームを読んだことになります。mark()およびメソッドを呼び出さずにストリームを複数回再読み取りすることはできません。使用しているクラスreset()の実装は、InputStream実際にこれを最初にサポートする必要があります。

それとは別に:

  • try-catchステートメントには次のものが必要です。
    • 適切な例外をキャッチし、単にスローExceptionするだけでなく、- IOException、、、URLExceptionまたは関連するものをすべて取得します(ブロックを削除すると、IDEがこれを推奨/修正しますcatch (Exception e))。
    • ストリームがnullでないかどうかをチェックし、finallyそれらを閉じるブロック。
  • メソッドはIOExceptionをスローする必要があります。
于 2013-03-01T11:14:04.483 に答える
0

たぶん、あなたはあなたのインプットストリームまたはあなたのアウトプットストリームを正しい方法で閉じていません。常に使用する

finally { 
    is.close(); 
    outputStream.close()
}
于 2013-02-28T11:44:04.763 に答える