私のアップデータライブラリのデバッグ版を作っています。通常、アップデータはダウンロードするファイルの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.zip
)downloadLink.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
で提供されているデータを新しいファイルにコピーするにはどうすればよいですか?
「URLConnection」と同じ方法です。 'URLConnection#getInputStream()'によって返された 'InputStream'を消費し、必要な処理を行います。 –
また、 'FileURLConnection'はあなたの現在のJREによって提供される実装です。もう一つのJREは、 'URLConnection'の別の実装を使うかもしれません。 'FileURLConnection'に頼らず、JDKの一部である' URLConnection'によって提供される規約に頼ってください。 –