前提・実現したいこと
Javaでcsvファイルを読み込み、読み込んだ配列の行列を入れ替えて、新たなcsvファイルを生成したいです。
コンパイルまでは成功していますが、うまくファイルを生成することができません。
下記のようなエラーが出てしまいます。
発生している問題・エラーメッセージ
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "str" is null at java.base/java.io.Writer.write(Writer.java:249) at csv2csv.main(csv2csv.java:36)
該当のソースコード
java
1import java.io.*; 2 3public class csv2csv { 4 private final static String inputCsvFile = "csvdata.txt"; 5 private final static String outputCsvFile = "newcsvdata.txt"; 6 7 public static void main(String[] args){ 8 9 String[][] csvArray = new String[6][6]; 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 csvArray[index] = line.split(","); 22 index++; 23 for(int i=0; i < csvArray[0].length; i++){ 24 for(int j = 0; j < csvArray[i].length; j++) { 25 out.write(csvArray[j][i]); 26 } 27 } 28 out.newLine(); 29 } 30 31 }catch(FileNotFoundException e){ 32 e.printStackTrace(); 33 }catch(IOException e){ 34 e.printStackTrace(); 35 }finally{ 36 try{ 37 in.close(); 38 out.close(); 39 }catch(IOException e){ 40 System.out.println("close fail"); 41 e.printStackTrace(); 42 } 43 } 44 } 45 }
試したこと
現在までに、for分の中の数字を変えてみたり、str is nullとエラー出ていることから、strを定義してみました。
補足情報(FW/ツールのバージョンなど)
macでVScodeを使用しています。
解決方法を教えてください。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/28 09:48