JavaでCSVデータを読み込み、書き込む際に任意の場所で改行する方法
JavaでCSVデータを読み込み、書き込みを使用としているのですが、書き込みをする際に、任意の場所で改行をする方法がわかりません。
例えばこのようなCSVデータを読み込んでこのような配列に入れ替えようとしています。
しかし、その方法がわからず、色々な方法を試してもエラーが出てしまいます。
発生している問題・エラーメッセージ
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3 at sample.main(sample.java:34)
該当のソースコード
Java
1 import java.io.*; 2 public class sample { 3 4 private final static String inputCsvFile = "samplecsv.txt"; 5 private final static String outputCsvFile = "newsamplecsv.txt"; 6 7 public static void main(String[] args){ 8 final int max_data = 100; 9 String[][] data = new String[max_data][]; 10 File inputFile = new File(inputCsvFile); 11 File outputFile = new File(outputCsvFile); 12 BufferedReader in = null; 13 BufferedWriter out = null; 14 try { 15 in = new BufferedReader(new FileReader(inputFile)); 16 out = new BufferedWriter(new FileWriter(outputFile)); 17 String line; 18 int index = 0; 19 20 while ((line = in.readLine()) != null){ 21 data[index] = line.split(","); 22 index++; 23 } 24 25 for(int i=0; i < data[0].length; i++){ 26 if (data[i] == null) break; 27 out.write(data[0][i] + ", "); 28 } 29 out.newLine(); 30 31 for(int i=1; i < data[0].length; i++){ 32 if (data[i] == null) break; 33 34 out.write(data[i][1] + ", " + data[i][2] + ", " + data[i][3] + ", " ); 35 out.write(" "); 36 if (data[i][3] != null) { 37 out.newLine(); 38 } 39 out.newLine(); 40 41 42 43 } 44 45 46 }catch(FileNotFoundException e){ 47 e.printStackTrace(); 48 }catch(IOException e){ 49 e.printStackTrace(); 50 }finally{ 51 try{ 52 in.close(); 53 out.close(); 54 }catch(IOException e){ 55 System.out.println("close fail"); 56 e.printStackTrace(); 57 } 58 } 59 } 60 }
試したこと
for文の中身を入れ替えてみたりしましたが、いくらやってもエラーが出てしまいます。
補足情報(FW/ツールのバージョンなど)
このようにJavaでCSVデータを読み込み、書き込む際に様々な編集を入れる方法が分かる方がいましたら、何卒よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー