CSV FILEはエクセルなどでもよく使われている。Proo15_1.javaはCSV FILE(a.txt)の各行の合計を計算し、それを各行の末尾に追加するプログラムである。ただし、元のCSV FILEはそのまま残り、結果ファイル(b.txt)が新しくできる。
Proo15_1.java
/* CSV FILE の各行の合計を 各行の末尾に付加する */ import java.util.*; import java.io.*; class Proo15_1 { public static void main(String args[]) throws IOException { int t=0,i; BufferedReader br= new BufferedReader(new FileReader("a.txt")); PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("b.txt"))); String str; while((str=br.readLine())!=null){ t=0;i=0; StringTokenizer st = new StringTokenizer(str, ","); while(st.hasMoreTokens()) { String s = st.nextToken(); i=Integer.parseInt(s); t=t+i; pw.print(i+","); } pw.println(t); } br.close(); pw.close(); } } /* FILE a.txt(input data) 1,2,3,4,5,6,7,8,9,10 4,5,6 7,8,9 FILE b.txt(結果ファイル) 1,2,3,4,5,6,7,8,9,10,55 4,5,6,15 7,8,9,24 */
説明:
2行 StringTokenierというclassがあるjava.utilとうパッケージをimportしている。
3行 BufferedReaderなどのioのライブラリclassを使うため。
15行 読み込んだ一行(str)をStringTokenizerにセットしている。つまり、カンマで区切られたデータを一つ一つ取り出すため。
16行 まだデータ(トークン)があるかチェックする。
17行 データを一つ取り出す。
18行 文字列の整数をintに変換する
20行 intデータと”,”をファイルに書き出している。
22行 一行の合計値をファイルに書き込んでいる。
30から32行 入力データ
35から37行 出力データ