前提・実現したいこと
csvを読み込み、特定列を出力したいです。
具体的には下記csvの「1・2・3・6列」を出力したいです。
しかし、下記のエラ-解決ができないこととを、特定列を出力する方法が分かりません。
宜しくお願い致します。
1,Irving ,Nintendo,Nintendo Switch,2019年5月10日
2,Aric:,Like a Dragon,SEGA,PlayStation,2019年2月15日
3,Arthur,Fox,PlayStation4,Switch,2020年10月20日
4,Ernest:,Houses,Nintendo,Nintendo Switch,2021年8月10日
5,Earl,Sony,PlayStation4,Switch,2020年10月20日
発生している問題・エラーメッセージ
説明 リソース パス ロケーション タイプ メソッド print(String) は型 BufferedWriter で未定義です メソッド print(String) は型 BufferedWriter で未定義です メソッド print(String) は型 BufferedWriter で未定義です
該当のソースコード
Java
1 2package Java; 3 4import java.io.BufferedReader; 5import java.io.BufferedWriter; 6import java.io.FileInputStream; 7import java.io.FileNotFoundException; 8import java.io.FileOutputStream; 9import java.io.IOException; 10import java.io.InputStreamReader; 11import java.io.OutputStreamWriter; 12import java.util.ArrayList; 13import java.util.Arrays; 14import java.util.List; 15 16public class Java { 17 18 19 20 public static void main(String[] args) throws FileNotFoundException { 21 // TODO 自動生成されたメソッド・スタブ 22 23 StringBuilder sb = new StringBuilder(); 24 25 BufferedReader br = null; 26 27 try{ 28 // ファイル入力(MS932) 29 br = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\1.csv"))); 30 31 String line; 32 while((line = br.readLine()) != null){ 33 34 // 置換処理 35 line = line.replace("あ", "ア"); 36 37 // バッファへ追加 38 sb.append(line); 39 sb.append("\r\n"); 40 } 41 42 } catch(IOException e) { 43 e.printStackTrace(); 44 }finally{ 45 if(br != null){ 46 try{ 47 br.close(); 48 }catch(IOException ie){ 49 } 50 } 51 } 52 53 BufferedWriter bw = null; 54 55 try{ 56 // ファイル出力(UTF8) 57 bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:\\2.csv"))); 58 59 // ファイルへ書き込み 60 bw.write(sb.toString()); 61 62 List<String> colList = new ArrayList<String>(); 63 colList = new ArrayList<String>(Arrays.asList(args[1].split(","))); 64 65 String lastCol = colList.get(colList.size() - 1); 66 67 String line = null; 68 // CSVファイルを1行毎に読み込む. 69 while( (line = br.readLine()) != null) { 70 String[] strList = line.split(",",0); // 行データを配列化. 71 72** // 特定列だけを出力. 73 for (String col : colList) { 74 if (!col.equals(lastCol)) { 75 // 最終列でない場合は、改行なし・カンマありで出力. 76 System.out.print(strList[Integer.parseInt(col)]); 77 bw.print(","); 78 } else { 79 // 最終列の場合は、改行あり・カンマなしで出力. 80 bw.println(strList[Integer.parseInt(col)]); 81 } 82 } 83 } 84 br.close(); 85 bw.close();** 86 87 } catch(IOException e) { 88 e.printStackTrace(); 89 }finally{ 90 if(bw != null){ 91 try{ 92 bw.close(); 93 }catch(IOException ie){ 94 } 95 } 96 } 97 } 98 99}
試したこと
エラーがでているbw.print部分を試しに、System.out.printに変更していましたが、やはりエラーとなってしまいました。
bw.print(strList[Integer.parseInt(col)]);
bw.print(",");
bw.println(strList[Integer.parseInt(col)]);
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー