[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 12:44 / Filesize : 104 KB / Number-of Response : 411
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者】Java質問・相談スレッド130【歓迎】



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/

385 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:03:54 ]
>>382
自分自身(BlockingQueque)があるスレッド、などというものは存在しないよ
BlockingQueue自身はスレッドを持っていない
止めるのは要素を取り出そうとした(takeを呼び出した)スレッド
あとついでに、満杯のキューにputしようとしたスレッドも空きが出来るまで止められる

386 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:08:37 ]
>>384
そもそもInputStreamReaderというのは、byte(バイト)をchar(Unicode文字)に変換するためのクラス
変換を通さずInputStreamから直にbyteを読み取ってOutputStreamに出力すればよいのでは

387 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:20:19 ]
>>386

やっぱりそうなりますよねぇ。
一行読込とかやりたかったんだけど、自前で組むしかなさそうですねぇ。

サンクスです。

388 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:23:32 ]
if(objFrm.get("idno")!=null && !objFrm.get("idno").equals("")){
このときに、!=nullはヌルじゃないを検査して、
!objFrm.get("idno").equals("")もヌルじゃないを検査しているのですけど
どうして2回繰り返すのでしょうか。

389 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:24:39 ]
s-jisのreader使って一行読み込んで,s-jisのwriter使ってoutputstreamに書き込めばいいんでない?

390 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:25:51 ]
ちゃんと読まなかった結果がこれだよ…

391 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:29:58 ]
>>384
もしかして "SJIS" じゃなくて "Windows-31j" とか "MS932" を指定すると上手く動いたりしないだろうか

392 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:31:17 ]
>>388
null と "" は別のものなので、2個チェックする必要があります

393 名前:382 mailto:sage [2009/08/10(月) 13:33:58 ]
>>385
わかりました、ありがとうございます



394 名前:デフォルトの名無しさん [2009/08/10(月) 13:43:53 ]
>>384

"Windows-31j" と"MS932"は、試してみましたがだめでした。

2chのスレッド内容を取得しようと思ったんですけど、httpHeaderに設定されている「content-length」の値と
SJIS→UTF8→SJISファイル出力で取得したbyte長が異なるので困ってます。

うーんいい方法はないのかなぁ。


395 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:53:40 ]
>>394
改行コードの問題とかはない?
readLineは\nでも\rでも\r\nでも改行扱いするはずだけど、出力してる改行コードが元と違うとか
具体的に何がどう変わってるのか、バイナリダンプかなんかで比較して調べるべきかと

396 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:19:09 ]
>>387
>一行読込とかやりたかったんだけど
ttp://commons.apache.org/io/api-release/
こういうのがありますが、使えませんか?


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を取得して、ネットから差分取得でうまくいきました。

ありがとうございます。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<104KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef