- 1 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:47:15 ]
- プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド129【歓迎】 pc12.2ch.net/test/read.cgi/tech/1247322478/ 次スレは>>990あたりで。 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/
- 397 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:27:35 ]
- >>394
やりたいこととやってることが微妙に合っていないように聞こえるが。 2chのhtmlが文字列だからといって、Reader/Writerを使わなければならない訳じゃない。 そもそもContentLengthはhttpのボディ部が”バイナリとして”何バイトあるかを示しているはずだ。 だからReader/Writerじゃなく、InputReader/Writerでバイナリのままファイルに落とせ。
- 398 名前:397 mailto:sage [2009/08/10(月) 14:29:48 ]
- >>397
ごめ、イキオイで間違った。 >inputRaeader/Writer じゃなくて InputStream/OutputStream
- 399 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:45:36 ]
- >>396
ディレクトリ操作とか便利そうですが、今回のファイル入出力に関してはちょっと用途が違うなと思いました。 >>397,398 やっぱしstreamでI/Oするのがスマートそうですね。 ちょっと実装してみます。
- 400 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:46:08 ]
- >>394
>「content-length」の値と >SJIS→UTF8→SJISファイル出力で取得したbyte長が異なるので困ってます。 content-lengthの事を書いているのを見ると、差分データを取りに行きたいんでしょ? スレッド番号.infoみたいなのを作ってレスポンスヘッダからconect-lengthの値を取得して、 <content-length>数値</content-length>とかやった方がいいと思うんだけど。
- 401 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:46:16 ]
- >>394
改行コードは問題ありませんでした。LFなので特に困ってないです。
- 402 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:49:46 ]
- >>400
ご名答。 ずばり2chスレッドの差分データを取得するために、content-lengthの値を設定したいのですが、思った通りに値を設定できなくて四苦八苦してます。 ちょっと悩んでみます。
- 403 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:51:37 ]
- うるさい
- 404 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:52:42 ]
- むしろHTTPなら java.net.HttpURLConnection とか import java.net.URL でまかなえるのでは
- 405 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:01:25 ]
- >>402
自分で全体から一部を取り出さなくても、”新着レスの表示”リンクを見れば URLにちょっと書くだけで差分が送られてくることが分かるだろ 全体を得たとしても、htmlを良く見ればレスがdat落ちと似た形式で一行毎になっているのが確認できるはずだ。 その部分を抜き出せば、レスの件数=行数。差分も得やすくなるだろ。
- 406 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:02:19 ]
- 受信した生データはいったんそのままStreamでファイルに保存しておいて、
あらためてファイルからReaderで1行ずつ読み込めばいい
- 407 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:23:52 ]
- >>402
>>404 にも書いてある通りHttpURLConnection 使った方がいいと思うな www.fk.urban.ne.jp/home/kishida/kouza/kishou/14net.html てか、content-lengthを取得できないっってことはe-tagも取得できていないでしょ? サーバに必要なデータを送らないと、ちゃんとデータを送り返してくれないような気がする 差分データはステータスコードを気にしながらコードを書かないいけないので注意
- 408 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:28:35 ]
- >>405
それがdatファイルの扱いに関しては簡単ではないんです。 >>406,407 初回は、HttpURLConnectionで取得しているのですが2回目以降は、最初に取得した情報をファイルに出力しておいて ファイルの差分をHttpURLConnectionで問い合わせようとしています。 そこで、content-lengthが重要になってくるんです。 javaじゃなければ簡単に処理できんだけど、なんでUTF8以外を扱おうとするとおかしくなるんだろ。
- 409 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:32:26 ]
- >>392 ありがとうございました。
- 410 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:48:57 ]
- >>408
とりあえず、初回読込はネットから取得してSJISファイル保存。 2回目以降のアクセスは、さきほどのファイルからbyteを取得して、ネットから差分取得でうまくいきました。 ありがとうございます。
|

|