JAVAによるCSVファイルの読み込みへの道その2

さて、その2である

CSVファイルを読み込みそのまま、出力するソフトを作成した

ボタンからファイルを選択しPATHを読み込むソース

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//String pathD = new
//現在のディレクトリを取得
//getAbsoluteFile();絶対パス
//getParentFile();相対パスを返す
//ピリオドはメソッドの呼び出し
File dir = new File(“.”).getAbsoluteFile().getParentFile();

JFileChooser fc = new JFileChooser(dir);
//指定拡張子を持つFileNameExtensionFilter(“filename”,”txt”,”csv”);
//FileNameExtensionFilterはファイル形式を指定する
FileNameExtensionFilter ff= new FileNameExtensionFilter(“filename”,”txt”,”csv”);
fc.setFileFilter(ff);
int retval = fc.showOpenDialog(this);
if(retval != JFileChooser.APPROVE_OPTION)
return;
//Select file
File f = fc.getSelectedFile();
//get file name
String currentName = f.getName();
txt1.setText(f.getAbsolutePath());

if(currentName.indexOf(“.csv”) > 0 || currentName.indexOf(“.txt”) > 0){
FileToDB2(currentName);
}

}

 

上記のソースで読み込んだPATHを引き継ぎ指定領域に書き出すソース

public String FileToDB2(String fileName){

String strReturn=”-1″;//エラーなら-1にします。
String strBuffer=””;//ファイル読込文字列です。

try{

//FileReaderのインスタンスを作ります。

//ごめんなさい、一部にエラーがあり読み込んだPATHを引数にいれられないので現状は手動で指定
FileReader fr = new FileReader(“C:\\out.csv”); //ここでbreak
//txt2.setText(fileName+”\n”);
BufferedReader reader = new BufferedReader(fr);

//一行ずつ処理
// String line;
//StringTokenizer token;

while ((strBuffer = reader.readLine()) != null) {
//カンマ処理
//token = new StringTokenizer(line, “,”);
//分割した文字を画面出力する
txt2.append(strBuffer+”\r\n”);
//txt2.append(token.nextTokenn()”\r\n”);
//txt2.setText(“hoge\n”);
txt2.append(“**************\n”);
}

reader.close();
return strReturn=”1″;

} catch(IOException ex){
System.out.println(“hoge”);
}
return null;
}
private void txt1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

 

完全におまじないだけれども何とか実行できました

beforfe                                                                        after
csv_reader_before csv_reader_after

一応できました

現状の問題

ファイルボタンをクリックして選んだファイル名より抽出したPATHが引き継げておらず、結局PATHを手動でソース上に手入力している
やっぱりjarファイルのダブルクリックで実行できない・・

 

2 Comments

  1. kano

    FileToDB2 には getName したものじゃなくて getAbdolutePath したものを渡せばいいのでは?
    もしくはファイル f をそのまま渡すとかでも良いと思います。

    Reply
  2. kano

    あと、
    if(currentName.indexOf(“.csv”) > 0 || currentName.indexOf(“.txt”) > 0){
    FileToDB2(currentName);
    }
    ここで拡張子の判定をしているようですが、
    lastIndexOf を使ったほうがスマートなように思います。

    Reply

kano へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>