- PR -

SWTを用いてファイルを取得し、文字列毎に区切りたいのですが

1
投稿者投稿内容
Lizua
会議室デビュー日: 2006/04/18
投稿数: 14
投稿日時: 2006-05-31 17:46
お世話になります。
SWTを使用し、CSVViewerのソースを参考にし、LogViewerを現在作成しているものです。

「*.log」ファイルを取得し、画面上の一覧に表示させたいのですが
CSVの場合はカンマ区切り一定なので、カンマををsplitし文字列を区切り、表示させてあげればよかったのですが、
区切りたい文字列が一定では無い場合はどうすればいいか悩んでおります。


↓(取り込むファイルの中身はこのような感じです。
2006-05-26 15:40:16,029 DEBUG util.DBAccess (DBAccess.java : 357) - ■終了15:40:16.029
2006-05-26 15:40:16,032 DEBUG util.Utility (Utility.java : 230) - 取得件数:40


↓(結果イメージはこういう感じに区切りたいのです。 「 | 」←区切り線
2006-05-26 | 15:40:16,029 | DEBUG | util.DBAccess (DBAccess.java : 357) | - ■終了15:40:16.029
2006-05-26 | 15:40:16,032 | DEBUG | util.Utility (Utility.java : 230) | - 取得件数:40


↓CSVViewerの時のソースです。
コード:
// ファイルを開く
reader = new BufferedReader(new FileReader(file));

// 1行毎に処理を行う
String line = null;

// バッファサイズ
int bufferSize = 100;

while ((line = reader.readLine()) != null) {

	final ArrayList array = new ArrayList(bufferSize);

	// カンマで文字列を区切る。
	String[] datas = line.split(",");
	array.add(datas);
	
	// バッファサイズまで読み込み
	for (int i = 1;
		i < bufferSize && (line = reader.readLine()) != null;
		i++) {

		datas = line.split(",");
		array.add(datas);
	}	
}	





わかりにくい説明になってしまいましたが、ご教授して頂けると幸いです。


koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2006-05-31 20:39
汎用的にと考えなければ、方法はあると思います。
すぐに思いつくのはこういう方法でしょうか。

" "区切りでsplitして、
1番目、2番目、3番目、4番目までは" | "を間に挟んで連結し、
4番目、5番目、6番目、7番目の間は" "を挟んで連結し、
7番目と8番目の間に" | "をはさみ、
9番目以降を連結するときは" "を間に挟む。

あと、多分log4jのログファイルだと思うのですが、それなら
欲しい形式で出力するようにしてしまうのも手かもしれません。
このあたりを参考にどうぞ。
http://www.javaroad.jp/opensource/js_log4j2.htm
Lizua
会議室デビュー日: 2006/04/18
投稿数: 14
投稿日時: 2006-06-01 09:07
ご指摘通りlog4jのログファイルです。
何番目の何番目でsplitで区切る。
を行ってしまうと、SQLのログや他のログに対応できなくなってしまうため、
頂いたURLを参考に形式で出力をしてみる事にします。
koeさん有難うございました。
1

スキルアップ/キャリアアップ(JOB@IT)