JavaのCSVライブラリ(OrangeSignal CSV)を使用して指定のカラムのみ読み込もうとしてます。
【CSVファイル内】
aaaa,bbbb,ccc,dd,eee(ヘッダー列)
値1,値2,値3,値4,値5
ああ,いい,うう,ええ,おお
【やりたいこと】
上記のようなカンマ区切りのCSVのうち、
3カラム目(ccc,値3,うう)を除く他のカラムを
取得して別CSVファイルに吐き出したいです。
【現状】
現在、以下のようになっています。
CSVファイルを読み込んだ後、リスト内の配列の値を削除してます。
本来読み込むときに、値を絞れると思っていたのですが、
行を読み飛ばすことはできても
列を読み飛ばすことができませんでしたので、以下のようになっています。
ただし、削除するメソッドにて
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:144)
at CSVLogic.narrow(CSVLogic.java:63)
at Main.main(Main.java:58)
のエラーが出ています。
<CSVを読み込むメソッド>
public List<String[]> csvRead
(String csvPath,String columnName){
//戻り値の設定
//List<String[]> rowList = new ArrayList<String[]>();
List<String[]> rowList = new LinkedList<String[]>();
try {
// 対象を絞って読み込み
rowList = Csv.load(new File(csvPath),"MS932", cfg, new StringArrayListHandler());
} catch (IOException e) { e.printStackTrace(); } return rowList;
}
<対象の列を削除するメソッド>
public List<String[]> narrow(List<String[]> rowList, int[] columnNum){
//戻り値の生成
List<String[]> redmineObjList = new ArrayList<String[]>();
// 除外対象のカラムを除去する
System.out.println("除去前"+rowList.get(0).length);
for(int num :columnNum){ for(String[] tmp : rowList){ List<String> tmplist = new ArrayList<String>(); tmplist = Arrays.asList(tmp); tmplist.remove(num); tmp = (String[]) tmplist.toArray(new String[tmplist.size()]); } } redmineObjList = rowList; System.out.println("除去後"+rowList.get(0).length); return redmineObjList;
}
以上、どなたかお力を貸してください。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/25 02:37
2016/02/25 05:30