BufferedReaderとBufferedWriter

ファイルの読み/書きがいつも微妙な感じのコーディングになってしまう。
役に立つかどうか分らないけど、ファイル読み/書きのユーティリティクラス第一弾!



import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

import org.apache.log4j.Logger;

/**
* BufferedReader/BufferedWriterのユーティリティクラス
*/
public class BufferedUtil {

/** logger */
private static final Logger logger = Logger.getLogger(BufferedUtil.class);

/** DEFAULT_CHAR_SET */
private static final String DEFAULT_CHAR_SET = "UTF-8";

/**
* BufferedReaderの取得
*
* @param fileName
* ファイル名称
*
* @return BufferedReader
*
* @throws FileNotFoundException
* fileNameが存在しない
*/
public BufferedReader getBufferedReader(String fileName)
throws FileNotFoundException {

try {

return getBufferedReader(fileName, DEFAULT_CHAR_SET);

} catch (UnsupportedEncodingException e) {

// デフォルト文字コード指定では本例外は発生しないため、
// 呼び出し元には非チェック例外とします
logger.error(e.getMessage(), e);
throw new RuntimeException(e);
}
}

/**
* BufferedReaderの取得
*
* @param fileName
* ファイル名称
* @param charSet
* 文字コード
*
* @return BufferedReader
*
* @throws FileNotFoundException
* fileNameが存在しない
* @throws UnsupportedEncodingException
* 指定したcharSetが不正
*/
public BufferedReader getBufferedReader(String fileName, String charSet)
throws FileNotFoundException, UnsupportedEncodingException {

FileInputStream fis = new FileInputStream(fileName);
return new BufferedReader(new InputStreamReader(fis, charSet));
}

/**
* @param bufferedReader
* BufferedReader
*
* @return bufferedReaderの全行のデータ
*
* @throws IOException
* ファイル読み込み中に例外発生
*/
public ArrayList readLineAll(BufferedReader bufferedReader)
throws IOException {

ArrayList lineList = new ArrayList();
String line = null;
while ((line = bufferedReader.readLine()) != null) {

lineList.add(line);
}

return lineList;
}

/**
* BufferedWriterの取得
*
* @param fileName
* ファイル名称
*
* @return BufferedWriter
*
* @throws FileNotFoundException
* fileNameが存在しない
*/
public BufferedWriter getBufferedWriter(String fileName)
throws FileNotFoundException {

try {

return getBufferedWriter(fileName, DEFAULT_CHAR_SET);

} catch (UnsupportedEncodingException e) {

// デフォルト文字コード指定では本例外は発生しないため、
// 呼び出し元には非チェック例外とします
logger.error(e.getMessage(), e);
throw new RuntimeException(e);
}
}

/**
* BufferedWriterの取得
*
* @param fileName
* ファイル名称
* @param charSet
* 文字コード
*
* @return BufferedWriter
*
* @throws FileNotFoundException
* fileNameが存在しない
* @throws UnsupportedEncodingException
* 指定したcharSetが不正
*/
public BufferedWriter getBufferedWriter(String fileName, String charSet)
throws FileNotFoundException, UnsupportedEncodingException {

FileOutputStream stream = new FileOutputStream(fileName);
return new BufferedWriter(new OutputStreamWriter(stream, charSet));
}

/**
* BufferedReaderclose

* BufferedReader::closeで例外が発生した場合、warnレベルのログ出力をして終了し、

* 呼び出し元には例外を戻しません
*
* @param bufferedReader
* BufferedReader
*/
public void close(BufferedReader bufferedReader) {

if (bufferedReader != null) {

try {

bufferedReader.close();

} catch (IOException e) {

logger.warn(e.getMessage(), e);
}
}
}


/**
* BufferedWriterclose

* BufferedWriter::closeで例外が発生した場合、warnレベルのログ出力をして終了し、

* 呼び出し元には例外を戻しません
*
* @param bufferedReader
* BufferedReader
*/
public void close(BufferedWriter bufferedWriter) {

if (bufferedWriter != null) {

try {

bufferedWriter.close();

} catch (IOException e) {

logger.warn(e.getMessage(), e);
}
}
}
}


0 コメント: