2016-05-08 3 views
1

私のアップデータライブラリのデバッグ版を作っています。通常、アップデータはダウンロードするファイルのURLに接続します。古いコードはこのように見えた:sun.net.www.protocol.file.FileURLConnectionからデータをコピーするには?

HttpURLConnection httpConnection; 
URL downloadLink = "..."; 
System.out.println("Downloading update: "+downloadLink); 
try { 
    httpConnection = (HttpURLConnection) (downloadLink.openConnection()); 
} 
catch(IOException e) { 
    updater.dispatchEvent("download.stopped",ex); 
    return; 
} 

問題は、リンクがファイル(file:/C:/.../file.zipdownloadLink.openConnection()リターンFileURLConnection代わりのHttpURLConnectionへのリンクである場合ということです。だから私は、より柔軟にコードを変更:

URLConnection connection = null; 
try { 
    connection = downloadLink.openConnection(); 
} catch (IOException ex) { 
    updater.dispatchEvent("download.stopped",ex); 
} 
System.out.println("Downloading update: "+downloadLink); 
if(connection instanceof HttpURLConnection) { 
    // HTTp downloading code exported to different method 
    if(!download_http((HttpURLConnection) connection, updater)) 
    return false; 
} 
else if(connection instanceof FileURLConnection) { 
    throw new UnsupportedOperationException("Now what?"); 
} 
else { 
    updater.dispatchEvent("download.stopped", 
     new IllegalStateException("Unknown class type for download conenction: " 
      + connection.getClass().getName())); 
    return false; 
} 

しかし、私はFileURLConnectionを使用する方法がわかりません。私はそれをGoogleにすれば、関連する結果を得るようなことさえない - 人々がそれを使用しないように見える。

質問は:FileURLConnectionで提供されているデータを新しいファイルにコピーするにはどうすればよいですか?

+0

「URLConnection」と同じ方法です。 'URLConnection#getInputStream()'によって返された 'InputStream'を消費し、必要な処理を行います。 –

+0

また、 'FileURLConnection'はあなたの現在のJREによって提供される実装です。もう一つのJREは、 'URLConnection'の別の実装を使うかもしれません。 'FileURLConnection'に頼らず、JDKの一部である' URLConnection'によって提供される規約に頼ってください。 –

答えて

2

あなたは気にしません。必要なのは入力ストリームだけです。URLConnectionがそれを提供します。次に、バイトをコピーするだけです。

+0

ありがとうございます。私はif文全体を削除することができます。 –

関連する問題