キャラクタセットを指定してテキストとして取得
テキストファイルの入出力はこちらを参照して下さい。 InputStream の扱いはテキストファイルを基本に考えれば良いと思います。 WEB 上のデータも結局 InputStream で取得しています。
import java.net.*; import java.io.*; public class Main { public static void main(String[] args) { try { // 書き込みファイル名 String filename = "index.html"; // テキストで書き込み為の俊美 BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(filename), "UTF8" ) ); // URL文字列 String str = "https://lightbox.sakura.ne.jp/demo/template/basic/basic-html/req/basic-req-2div.html"; // ターゲット URL url = new URL( str ); // 接続オブジェクト HttpURLConnection http = (HttpURLConnection)url.openConnection(); // GET メソッド http.setRequestMethod("GET"); // 接続 http.connect(); // UTF-8 でリーダーを作成 InputStreamReader isr = new InputStreamReader(http.getInputStream(), "utf8"); // 行単位で読み込む為の準備 BufferedReader br = new BufferedReader(isr); String line_buffer; // BufferedReader は、readLine が null を返すと読み込み終了 while ( null != (line_buffer = br.readLine() ) ) { // 書き込み bw.write( line_buffer + "\r\n" ); } // 閉じる br.close(); // BufferedReader isr.close(); // InputStreamReader http.disconnect(); // HttpURLConnection bw.close(); // BufferedWriter } catch( Exception e ) { System.out.println( e.getMessage() ); } } }
バイナリデータとしてそのままファイル化したものを使う
単純にダウンロードするだけならば、キャラクタセットを考慮する必要はありません
import java.net.*; import java.io.*; import java.util.*; public class Main { public static void main(String[] args) { byte[] buffer = new byte[4096]; int readByte = 0; try { // ターゲット URL url = new URL("https://lightbox.sakura.ne.jp/demo/template/basic/basic-html/req/basic-req-2div.html"); // 接続オブジェクト HttpURLConnection http = (HttpURLConnection)url.openConnection(); // GET メソッド http.setRequestMethod("GET"); // 接続 http.connect(); DataOutputStream dataOutStream = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("index.html"))); BufferedInputStream bis = new BufferedInputStream( http.getInputStream() ); // バイトでの読込み DataInputStream dis = new DataInputStream(bis); while ( -1 != (readByte = dis.read(buffer) ) ) { // コマンドプロンプトに表示 dataOutStream.write(buffer, 0, readByte); } // 各々受け持ちクラスを閉じる dis.close(); bis.close(); dataOutStream.close(); http.disconnect(); } catch( Exception e ) { } } }
関連するドキュメント
サポートされるエンコーディング ( JDK 11 )
|
【java : 通信関連の最新記事】
- Java11 + Visual Studio Code + JavaMail( with JavaBeans Activation Framework )
- Javamail で IMAP 受信
- OkHttp v3.8.0 jar( と okio 1.13.0.jar ) を Eclipse のプロジェクトに追加して一般的な POST 送信を行う
- java をコマンドプロンプトからビルドして実行するサンプル。( メール送信が初心者には楽しいはず )
- Eclipse + JFace : HttpURLConnection で GET
- javamail でメール送信と、付属のバッチビルド用のスクリプトの解説
- Java : バッチでテストする Twiiter API の『検索処理』
- google-gson(Java) を使って、JSON を 定義済みクラスのオブジェクトに一括変換する
- Java : RSS(Document) から、item の中の先頭の指定した要素の値を取得するクラス
- google-gson で、JSON 文字列の構成要素の一覧を取り出す処理
- java : Apache commons-net-3.0.1 を使ってごく自然に FTPS(セキュア) でファイルのアップロード/ダウンロード
- javamail 1.4.4 : IMAP で、ユーザから別のユーザへメッセージを全て(範囲指定で)コピーする
- javamail 1.4.4 : IMAP のメール受信イベントでメールを受け取ったら処理を行う
- Java : WEB 上の XML データの内容を取得する