0

Web からいくつかのデータ (pdf、gif、および mp3) をダウンロードするためのサンプル コードとそのスイング アプリケーションがあります。Windows 7 では完全に動作しますが、Windows xp では動作しません。

私のコードは

 public static Float downloadFile(String targetUrl,File filePath)
        {
            try
            {

                Integer count=0;
                URL url = new URL(targetUrl);
                HttpURLConnection connection=(HttpURLConnection) url.openConnection();
                connection.setRequestMethod("GET");
                connection.setDoOutput(true);
                connection.setConnectTimeout(10000);
                connection.connect();

                int lenghtOfFile = connection.getContentLength();
                Thread.sleep(100);
                InputStream input = new BufferedInputStream(url.openStream());
                Thread.sleep(100);
                OutputStream output = new FileOutputStream(filePath);
                byte data[] = new byte[input.available()];
                long total = 0;
                while ((count = input.read(data)) != -1)
                {
                    total += count;
                    output.write(data, 0, count);
                }
                output.flush();
                output.close();
                input.close();
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            return 2.5f;
            }  
    }

コードを 0 にすることで無限 while ループに入ります。

4

1 に答える 1

0

Q: バッファを初期化するときの「input.available()」とは何ですか? その瞬間、たまたま「0」だったら悲しいですよね。

解決策の 1 つは、固定長のバッファ (8192 など) を使用することです。

于 2013-02-28T05:57:08.557 に答える