Java学習中なので何となく…
タブ区切りのデータをカンマ区切りにするアレを作ってみました。
VSCodeを使っていたり、ろくに参考書も読まずにコーディングしているので
かなり汚いです。
コード
import java.io.*; import java.util.*; public class Tsv2Csv { public static void main(String[] args) throws FileNotFoundException { if (args.length != 2) { return; } String readFileName = args[0]; String createFileName = args[1]; // ファイル読み込み List<String[]> list = ReadFile(readFileName); // CSVファイル作成 CreateCsv(createFileName, list); return; } /** * ReadFileメソッド 指定したファイルのデータを取得する。 * * @param readFileName 読み込みファイル名 * @return ファイルデータ */ public static List<String[]> ReadFile(String readFileName) { List<String[]> list = new ArrayList<String[]>(0); try { int i = 0; File f = new File(readFileName); String str = null; BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f), "UTF-8")); while((str = br.readLine()) != null){ String data = str; String[] tmpArray = data.split("\t"); for (i = 0; i < tmpArray.length; i++) { tmpArray[i] = "\"" + tmpArray[i] + "\""; } list.add(tmpArray); } br.close(); } catch (Exception e) { return null; } return list; } /** * CreateCsvメソッド CSVファイルを作成する。 * * @param createFileName 出力ファイル名 * @param list 出力データ * @return ファイル作成成功:true, 失敗:false */ public static boolean CreateCsv(String createFileName, List<String[]> list) { try { PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(createFileName), "UTF-8"))); for (String[] tmpStringArray : list) { pw.println(String.join(",", tmpStringArray)); } pw.close(); } catch (Exception e) { return false; } return true; } }
入力データ
みんな大好き意地悪データも入ってます。(∩´∀`)∩
1 2 ho"ge test 5 1 2, hoge te\rst 6👉 "1 2 ho①ge te's\t 5 1 2㈱ hoge te((((oノ´3`)ノst 5\r\n
実行結果(出力ファイル)
かなり見づらいけど、変換できてます。
"1","2","ho"ge","test","5" "1","2,","hoge","te\rst","6👉" ""1","2","ho①ge","te's\t","5" "1","2㈱","hoge","te((((oノ´3`)ノst","5\r\n"
(´-`).。oO(完成と思ったら、意地悪データを入れた後に色々と崩壊した感じ…