【JAVA】BOM(Byte Of Mark)の手動除去ロジック
JAVAでUTF-8のファイルからBOM(Byte Of Mark)を取り除く方法。
ググればでてくるが自分用のメモ。
JAVAでUTF-8のファイルからBOM(Byte Of Mark)を取り除く方法。
ググればでてくるが自分用のメモ。
仕事でどうしてもJAVAからExcelの読取をしたくなったのでそのメモ。
POIというライブラリを使って行う。
オープンソースなので自由に使用できる。
ダウンロードは下記より。
http://poi.apache.org/
自分がDLした最新版jarには「20140208」という日付が付いている。
この記事内で記載する実装もそのjarを使っている。
POIに関しては、ググればそれなりの実装例や使い方が出てくるが、
紹介記事が古くて現在のAPI仕様とあってなかったりする。
厳密にはapacheが公開しているAPI Documentを参照するべきなのだろう。
(英語だから個人的には読めないんだけど)
DBA_TABLESを基準にしてFUNCTIONやPROCEDUREのソースを調査し
そのテーブルが使用されているかどうかを検査するSQL。
このSQLの返却結果の中でOBJ_USING_COUNTが1以上のテーブルは
少なくともどこかで使われています。
⇒そのテーブルをDROPして削除する/ALTERして項目を削除する等すると
該当FUNCTION、PROCEFDUREがINVALID(コンパイルエラーの意)になる
テキストファイルのエンコーディングを UTF-8⇒Shift-JIS(MS932)に変換する自作プログラム。 サクラエディタとかのテキストエディタとかに標準で備わってはいるが 元のテキストファイルが重いとメモリ食うので、自作しました。 自分専用の色が強いですが。
192.168.0.~
⇒私は「いっくに、いちろっぱ~」と読むんですが、
特に168の部分は「いちろくはち」とそのまま読む人もいますね。
V$SESSION.MACHINEにマシン名で検索をかけて、
あとはLOGON_TIMEやV$SQL.SQLTEXT等を見ればある程度わかるけど、
そのあたりがはっきりしない場合に接続元マシンから探り当てる方法。
※例によって経験則なので確実かどうかわかりません
※Linuxを前提にしていますがWindowsでも似た考えでできると思います
ここに挙げたやり方に則り
実際によく使ってる簡易的にセッションの情報を取得するSQL。
リンク先で挙げたようなV$SESSIONとV$SESSION_LONGOPSに加えて
V$SQLを結合してSQL_FULLTEXTを取得します
(そのセッションがどんなSQL投げてるのか調べる)。
javaでHTTP接続するプログラムのサンプル。
// ①URLを生成
// ②接続してHttpURLConnectionを生成
HttpURLConnection con = (HttpURLConnection)new URL(url).openConnection();
// ③InputStreamからレスポンスをもらう
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(),"Shift-JIS"));
// ④まわす
while(br.ready()) {
System.out.println(br.readLine());
}
// ⑤とじる
con.disconnect();
br.close();