tSeiya's blog

行動結果のアウトプット場

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(); }
  }
}