ByteArrayOutputStream。
バイナリーデータとして
外部ファイルを読み込む方法についてメモ。
毎度のことながら、へなちょこですが。
あ、言語はJavaです。
ASCII 251 をデリミタにした場合の特殊なShift_JISのCSVファイル読みこみ
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;