行きつけのサイトのログ(HTMLファイル)を定期的に取得しているのですが、その時に使用しているサンプルプログラムを公開します。
Javaの実行環境が整っているWindowsOSで、LogGet.java と LogGet.bat を同じディレクトリに置き、LogGet.bat を実行すると、「html」フォルダが出来上がりそこにHTMLファイルが格納されます。
取得するHTMLファイルのURL、及びHTMLファイルのローカルでのファイル名は、LogGet.java を修正して変更します。
HTMLファイルの文字コードは「EUC-JP」を前提としていますので、他の文字コードが使用されている場合は LogGet.java の「EUC-JP」の箇所を適宜修正してください。
【サンプルコード】
・LogGet.java
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.net.URL;
public class LogGet {
public static void main(final String[ ] args){
/* 利用者がいじる所はここです。
* ・"~.html"となっている箇所は取得ログのファイル名です。
* 適宜書き換えてください。
* ※ファイル名が被った場合はログを取得しません
* ・取得する必要が無いログはコメントアウトしてください。
*/
//LogGet("ログ1","http://hoge.html","ほげ.html");
LogGet("ログ2","http://fuga.html","ふが.html");
}
public static void LogGet(String logName, String logUrl, String fileName){
File f = new File("html\\" + fileName);
if(f.exists()){
System.out.println
("重複したファイル名 " + fileName + " が与えられたため " +
logName + " は取得しません。");
return;
}
URL url = null;
InputStream is = null;
InputStreamReader isr = null;
FileOutputStream fos = null;
OutputStreamWriter osw = null;
try {
url = new URL(logUrl);
is = url.openStream();
isr = new InputStreamReader(is,"EUC-JP");
fos = new FileOutputStream("html\\" + fileName);
osw = new OutputStreamWriter(fos,"EUC-JP");
while(true) {
int i = isr.read();
if (i == -1) {
break;
}
osw.write( (char)i);
}
System.out.println
(logName + " をファイル名 " + fileName + " で取得しました。");
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
try {
isr.close();
is.close();
osw.close();
fos.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
}
・LogGet.bat
@echo off
rem JDKをインストールしていない場合はインストールしてください。
rem https://qiita.com/ko2a/items/69fa8a5366d7449500ca
rem 都度コンパイルを実施(javaをスクリプト言語っぽく利用)
if exist .\LogGet.class (del .\LogGet.class)
javac -encoding UTF-8 .\LogGet.java
rem 処理実行
if not exist html\ (mkdir html)
java -classpath . LogGet
rem 処理終了
del .\LogGet.class
pause
exit