import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
public class CSVHeaderReplace {
public static void main(String[] args) throws IOException {
String inputFile = "input.csv";
String outputFile = "output.csv";
// 英語→和名のマッピング
Map<String, String> headerMap = new HashMap<>();
headerMap.put("Name", "名前");
headerMap.put("Math", "数学");
headerMap.put("Science", "理科");
headerMap.put("English", "英語");
try (
CSVReader reader = new CSVReader(new FileReader(inputFile));
CSVWriter writer = new CSVWriter(new FileWriter(outputFile))
) {
List<String[]> allRows = reader.readAll();
if (allRows.isEmpty()) return;
// 最初の行 = ヘッダー
String[] originalHeader = allRows.get(0);
String[] replacedHeader = Arrays.stream(originalHeader)
.map(col -> headerMap.getOrDefault(col, col)) // 対応がない場合はそのまま
.toArray(String[]::new);
writer.writeNext(replacedHeader);
// 2行目以降はデータ行としてそのまま書き出し
for (int i = 1; i < allRows.size(); i++) {
writer.writeNext(allRows.get(i));
}
}
}
}
import com.opencsv.CSVReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class HeaderMappingLoader {
public static Map<String, String> loadHeaderMap(String mappingFilePath) throws IOException {
Map<String, String> map = new HashMap<>();
try (CSVReader reader = new CSVReader(new FileReader(mappingFilePath))) {
String[] line;
while ((line = reader.readNext()) != null) {
if (line.length >= 2) {
String key = line[0].trim();
String value = line[1].trim();
map.put(key, value);
}
}
}
return map;
}
}
CSVWriter writer = new CSVWriter(
new OutputStreamWriter(new FileOutputStream(outputFile), StandardCharsets.UTF_8),
CSVWriter.DEFAULT_SEPARATOR,
CSVWriter.NO_QUOTE_CHARACTER,
CSVWriter.DEFAULT_ESCAPE_CHARACTER,
System.lineSeparator()
);