嗨,我有一份清单
List<String[]> csvRows, String[] csvHeaderRow
我的目标是计算我将从这些行中写出的最终 CSV 文件的总大小,因此我应该添加所有逗号、csvRows、csvHeaderRow 的总大小。请注意,csvRows 中的许多列可能为空,例如“Rick,,,,15,,4324,,”,csvHeaderRow 将始终被完全填充。
我可以将这些全部写入 bytearrayStream 并计算 byteArray 的长度。但我想编写更高效、更简洁的代码。
最新代码版本:
public void long getNumOfFiles(List<String[]> csvRows, String[] csvHeaderRow){
long totalSize = csvRows.stream().mapToLong(i -> {
return Stream.of(i).mapToLong(str -> {
if (StringUtils.isNotEmpty(str)) {
return str.getBytes().length;
}
return 0L;
}).sum();
}).sum();
totalSize = totalSize + Stream.of(csvHeaderRow).mapToLong(str -> str.getBytes().length).sum();
totalSize = totalSize + csvHeaderRow.length * csvRows.size() + 1; -> number of commas
long numOfFiles = (totalSize / MAX_FILE_SIZE_BYTES) + 1;
return numOfFiles;
}
如何更有效地写这个?