さて、その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:
}
完全におまじないだけれども何とか実行できました
一応できました
現状の問題
ファイルボタンをクリックして選んだファイル名より抽出したPATHが引き継げておらず、結局PATHを手動でソース上に手入力している
やっぱりjarファイルのダブルクリックで実行できない・・
FileToDB2 には getName したものじゃなくて getAbdolutePath したものを渡せばいいのでは?
もしくはファイル f をそのまま渡すとかでも良いと思います。
あと、
if(currentName.indexOf(“.csv”) > 0 || currentName.indexOf(“.txt”) > 0){
FileToDB2(currentName);
}
ここで拡張子の判定をしているようですが、
lastIndexOf を使ったほうがスマートなように思います。