キャラクタセットを指定してテキストとして取得
テキストファイルの入出力はこちらを参照して下さい。 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 データの内容を取得する






