最終配列にNULLが含まれる場合の対応について
下記のソースで
テキスト入出力を行う際でのご質問がございます。
最終配列がNULLの時と
文字がある場合のデータを入出力する際に
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at ExIO3.getValue(テスト.java:53)
at ExIO3.main(テスト.java:14)
というエラーが表示されます。
最終配列にすべて文字が存在する場合は問題ないのですが
こちらはBufferedReaderで
1レコードずつ読み込んでいるソースに問題があるのでしょうか?
アドバイスどうぞよろしくお願いします。
import java.io.*; //(1)入出力パッケージのインポート
import java.text.Normalizer;
class ExIO3 {
//mainメソッド
public static void main(String[] args) throws IOException {
ExIO3 object1 = new ExIO3();
//(1)抜出しメソッドgetValueと、
// ソートメソッドsortValueの呼出
object1.sortValue(object1.getValue());
}
//getValueメソッド
Reader getValue () throws IOException {
//(2)FileReaderオブジェクトcsvの生成
FileReader csv = new FileReader ("C:\\javasample\\テスト\\src\\テストin.txt");
//(3)BufferedReaderクラスでFileReaderクラスの
// オブジェクトcsvをラップ
BufferedReader in = new BufferedReader(csv);
//(4)PipedWriterオブジェクトpipeOutを生成
PipedWriter pipeOut = new PipedWriter();
//(5)PipedReaderオブジェクトpipeInを生成
PipedReader pipeIn = new PipedReader(pipeOut);
//(6)PrintWriterクラスでPipedWriterクラスの
// オブジェクトpipeOutをラップ
PrintWriter out = new PrintWriter("C:\\javasample\\テスト\\src\\テストout.txt");
//************************************************************************************************
//(7)入力テキストデータ
//************************************************************************************************
String line;
String[] arrayline;
Integer sequence_No =0 ; //行のカウンタ
//(8)読み込みソースがなくなるまでBufferedReaderで1行ずつ読み込み、
// 読み込みデータをprintlnメソッドで書き込み
while((line = in.readLine()) != null) {
sequence_No++; //連続番号生成
arrayline = line.split(",");
//======================================================
String A= arrayline[0] ;
String B = arrayline[1] ;
//======================================================
//************************************************************************************************
//(9)出力テキストデータ
//************************************************************************************************
顧客郵便番号_編集(A,out);
out.print(","); // ※
顧客住所_編集(B,out);
out.println(""); // ※
out.flush();
}
//(10)読み込みストリームのクローズ
in.close();
//(11)書き込みストリームのクローズ
out.close();
return pipeIn; //(12)pipeInオブジェクトのリターン
}
//************************************************************************************************
//顧客郵便番号_編集A1
//************************************************************************************************
private void 顧客郵便番号_編集(String a, PrintWriter out) {
// TODO 自動生成されたメソッド・スタブ
out.print(a.replaceAll(" ","").replaceAll(" ",""));
}
//************************************************************************************************
//顧客住所_編集B2
//************************************************************************************************
private void 顧客住所_編集(String b, PrintWriter out) {
// TODO 自動生成されたメソッド・スタブ
out.print(b);
}
//sortValueメソッド
void sortValue(Reader source) throws IOException {
}
}
お礼
回答ありがとうございます。サンプルのような小さなプログラムではflush()する必要はないということですね?ありがとうございました。