JavaでCSVファイルを読み込んで,別のCSVファイルに一致するデータを書き込む
概要
データセット: correct.csv ペアになった情報を持つ,カンマ区切り ex. Aさん,80点 \n Bさん,100点 \n test.csv 片一方だけの情報を持つ,カンマ区切り ex. Bさん \n Aさん \n
correct.csvのペア情報をMapで持ち,test.csvをペア情報にして,output.csvに書き込む
import java.util.*; import java.io.*; public class MatchWrite { public static void main(String[] args) throws Exception { try { String inFileName1 = "correct.csv"; String inFileName2 = "test.csv"; String outFileName = "output.csv"; String line1,line2 = ""; StringBuilder outText = new StringBuilder(); HashMap<String,String> correctMap = new HashMap<String,String>(); FileInputStream fis1 = new FileInputStream(inFileName1); InputStreamReader isr1 = new InputStreamReader(fis1 , "Shift-JIS"); BufferedReader br1 = new BufferedReader(isr1); FileInputStream fis2 = new FileInputStream(inFileName2); InputStreamReader isr2 = new InputStreamReader(fis2 , "Shift-JIS"); BufferedReader br2 = new BufferedReader(isr2); FileOutputStream fos = new FileOutputStream(outFileName); OutputStreamWriter osw = new OutputStreamWriter(fos , "Shift-JIS"); BufferedWriter bw = new BufferedWriter(osw); while((line1=br1.readLine()) != null) { String[] correct = line1.split(","); correctMap.put(correct[0],correct[1]); } while((line2=br2.readLine()) != null) { String[] test = line2.split(","); if(correctMap.containsKey(test[0])) { outText.append(test[0]+","+correctMap.get(test[0])+"\n"); } } bw.write(new String(outText)); System.out.println(new String(outText)); bw.close(); osw.close(); fos.close(); br1.close(); isr1.close(); fis1.close(); br2.close(); isr2.close(); fis2.close(); } catch (FileNotFoundException e) { e.printStackTrace();} catch (IOException e) { e.printStackTrace(); } } }