私は最近自分のプログラム用のアップデータを作成しようとしています。アップデーターはdropboxに行き、 'public'フォルダー内のファイルを見て、それが存在するかどうかを判断するはずです。それは動作し、ファイルをダウンロードできますが、ファイルが存在するかどうかを確認することはできません。私はthisを見て、それが解決策だと思ったが、うまく動作していないようだ。ここでリモートサーバー上のファイルをチェックし、存在する場合はそれをダウンロードしてください。
は、私は、ファイルの存在を確認するために使用しているコードです:
public static boolean exists(String URLName) {
try {
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection con = (HttpURLConnection) new URL(URLName)
.openConnection();
con.setRequestMethod("HEAD");
return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
しかし、常にtrueを返すようです。私がアクセスしているファイルはすべて「App_」で始まり、「.zip」で終わります。変化する唯一のものは、#。###形式のバージョンです。そのことについて
public static void main(String[] args) throws IOException,
InterruptedException {
double origVersion = 0.008;
double versionTimes = 0.000;
while(exists("http://dl.dropbox.com/u/.../" + "App_"+ String.valueOf(origVersion + versionTimes) + ".zip")) {
versionTimes = round(versionTimes + 0.001);
//origVersion = round(origVersion + 0.001);
System.exit(0);
}
}
public static boolean exists(String URLName) {
try {
HttpURLConnection.setFollowRedirects(false);
// note : you may also need
// HttpURLConnection.setInstanceFollowRedirects(false)
HttpURLConnection con = (HttpURLConnection) new URL(URLName)
.openConnection();
con.setRequestMethod("HEAD");
return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
static double round(double d) {
DecimalFormat twoDForm = new DecimalFormat("#.###");
return Double.valueOf(twoDForm.format(d));
}
申し訳ありません...このコードは長すぎました:
は、ここで私はそれをチェックしています方法については完全なコードです。とにかく。これをテストするために、今バージョン0.009が利用可能かどうかをチェックします。それはどれですか。そのフルバージョンは変数double origVersionにあります。今、origVersionを0.009に設定すると、0.01をチェックします。 App_0.01.zipが存在しないという事実を除いて、これは問題ありません。
私はまた、引数
THEFILENAME --no-プロキシ--spider
でwgetコマンドを起動して、この問題を解決するためにwgetのに見てきましたが、それはどちらか動作しませんでした。誰でも助けてくれますか?私は大いに感謝します。
また、ファイルとの接続を確立することができる他の場所を見て、セキュリティで保護されている場合はファイルが存在しています。そうでない場合、それはしません。しかし、私はそれをどうやって行うのか分かりません。誰でも暗闇の中から私を連れ出すことができますか?
[EDIT]
はまた、wgetの上THEFILENAME --no-プロキシ--spiderを実行すると、バージョン0.009をチェックするときに、働いていた、と次のように出力:
Spider mode enabled. Check if remote file exists.
--2012-03-16 08:59:55-- http://dl.dropbox.com/u/.../....zip
Resolving dl.dropbox.com... 107.21.103.249, 107.20.135.4, 107.20.198.68, ...
Connecting to dl.dropbox.com|107.21.103.249|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 758067 (740K) [application/zip]
Remote file exists.
とをチェックしますバージョン0.01:
Spider mode enabled. Check if remote file exists.
--2012-03-16 09:01:15-- http://dl.dropbox.com/u/.../....zip
Resolving dl.dropbox.com... 107.22.196.64, 50.19.217.32, 174.129.218.194, ...
Connecting to dl.dropbox.com|107.22.196.64|:80... connected.
HTTP request sent, awaiting response... 404 NOT FOUND
Remote file does not exist -- broken link!!!
私もthisを使用してwgetの出力を読み取り、(input.indexOf( "404が見つかりません")== -1)の場合、まだ無駄に使ってみました。
* "最近私のプログラム用のアップデータを作成しようとしています。 GUIを持っている場合は、[Java Web Start](http:// stackoverflow。com/tags/java-web-start/info)。自動更新は、JWSが提供する機能の1つに過ぎません。 –
ありがとう!私はそれを調べます!しかし、コンソールプログラムの場合はウェブスタートの仕事はありますか?それは... – Xyene