[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: UrlDown.java
UrlDown.java ですが、バイナリーファイルをテキストエンコーディングして
しまうというバグがありました。
>UrlDown.java
>==================================================================
>import java.io.*;
>import java.util.*;
>import java.net.*;
>
>public class UrlDown {
>
> public void urlDown(String urlspeck, String path) {
> try {
> URL url = new URL(urlspeck);
> URLConnection conn = url.openConnection();
ここに、
System.out.println("TYPE::" + conn.getContentType());//DEBUG
System.out.println("ENC::" + conn.getContentEncoding());//DEBUG
というデバッグ行を入れてみました。
例えば Windows の .exe ファイルだと、実行結果は
TYPE::application/octet-stream
ENC::null
こんなカンジです。
疑惑としては、URLConnecition を new しただけだと、
すべてテキストエンコーディングしてしまうのではないかと思えます。
(JDK 1.2 RC1 Windows 95)
getContentType() などを一度呼んでやる必要があるかも知れません。
(今日は作業が詰まっていて追試できない...)
> InputStream is = conn.getInputStream();
> FileWriter out = new FileWriter(path);
FileWriter だとテキストエンコーディングがかかってしまうので、結局
FileOutputStream out =
new FileOutputStream(new File(path));
こうなりました。
> int c = -1;
> while ((c = is.read()) > -1) {
> out.write(c);
> }
> out.close();
> }
> catch (MalformedURLException e) {
> }
> catch (IOException e) {
> System.out.println("ERROR::" + e.getMessage());
> e.printStackTrace();
> }
> catch (Exception e) {
> }
> }
>
> public static void main(String[] args) {
> UrlDown ud = new UrlDown();
> try {
> BufferedReader data = new BufferedReader( new FileReader(args[0]));
> String line = null;
> while ((line = data.readLine()) != null) {
ついでですがここに
if (line.startsWith("#")) { continue; } //1998.12.9 y.e comment行の処理
を追加して、行頭 # の行は読み飛ばすことにしました。
> StringTokenizer tk = new StringTokenizer(line);
> if (!tk.hasMoreTokens()) { continue; }
> String urlspeck = tk.nextToken();
> if (!tk.hasMoreTokens()) { continue; }
> String path = tk.nextToken();
> System.out.println(urlspeck + " " + path);
> ud.urlDown(urlspeck, path);
> }
> }
> catch (FileNotFoundException e) {
> }
> catch (IOException e) {
> }
> }
>}
>==================================================================
>
>いちおうこれで目的は達したので今日はここまでにします。m(_ _)m
ぜんぜん達してませんでした。^^;
## Javaとは無関係ですが、MFC の ソース( CView の派生クラス) を山手線の
## 中で眺めていたら、イベントモデルがあまりにもダサダサなので食欲(?)が
## うせました。^^;
## Java で Delegation Listener モデルを書いているときは幸せなのに... ;_;
## やっぱ久野さんの言う通り WFC に取って代わられる運命なのかな。
### でも "delegate" (クラスを無視したメソッドポインター) は使うのやだ。
------------------------------------------------------------------
遠藤靖之 (えんどう やすゆき) <yasuyuki@xxxxxxxxxx>
http://www.freepage.total.co.jp/jfriends/ (Java互助会ホームページ)
株式会社タイムインターメディア 情報通信サービス部 TEL 03-5362-9009
〒162-0065 新宿区住吉町3-11 新宿スパイアビル8F FAX 03-5362-9008