frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

ByteArrayOutputStream。

バイナリーデータとして

外部ファイルを読み込む方法についてメモ。

毎度のことながら、へなちょこですが。

あ、言語はJavaです。

ASCII 251 をデリミタにした場合の特殊なShift_JISCSVファイル読みこみ

private final static String DELIMITER = "fffffffa"; // デリミタ

private final static String LINE_FEED = "a"; // LF

List allDataList = new ArrayList();

List lineList = new ArrayList();

byte[] checkByte = new byte[8192];

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

try {

FileInputStream fileInputStream = new FileInputStream(filePath);

// --- 1byteずつ読み込んでデリミタ・改行をチェック ---

while ((fileInputStream.read(checkByte, 0, 1)) > -1) {

String hex = Integer.toHexString(checkByte[0]);

if (hex.equals(LINE_FEED)) { // 改行(LF)

allDataList.add(lineList);

lineList = new ArrayList();

continue;

}

if (hex.equals(DELIMITER)) { // デリミタ

lineList.add(out.toString());

byteArrayOutputStream.reset();

continue;

}

byteArrayOutputStream.write(checkByte, 0, 1);

}

if (lineList != null && lineList.size() != 0) allDataList.add(lineList);

fileInputStream.close();

} catch (Exception e) {

e.printStackTrace();

}

return allDataList;