0

我正在尝试将带有浮点值的大型 CSV 传递给 MappedByteBuffer。我希望它被读取为浮点值而不是文本,并且不希望必须逐个字符地解析它并删除逗号(分隔符)。我想在不使用任何内存的情况下将其处理为二维数组(由索引管理),即不将其放入任何变量中进行遍历等。我正在使用的代码是:-

private static String bigExcelFile = "testCSV.csv";
RandomAccessFile file = new RandomAccessFile(new File(bigExcelFile), "r")
FileChannel fileChannel = file.getChannel();
MappedByteBuffer buffer = fileChannel.map(FileChannel.MapMode.READ_ONLY, 0, fileChannel.size());
for (int i = 0; i < buffer.limit(); i++)
{
   System.out.println((char) buffer.get());
}  

我也尝试过使用 floatBuffer 但它也不起作用。我知道它是一个文本文件,其值用逗号分隔,我愿意改用 excel 文件。但问题是如何使用浮点数据,而不必在将其放入映射字节缓冲区之前或之后将所有内容放入内存中,这是我们实际上试图通过使用内存映射数据结构来避免的)。

编辑:我所做的是解析 CSV 并将其写入浮点数的二进制 (.bin) 文件,然后在实际程序中通过 MappedByteBuffer (asFloatBuffer) 直接从该 (.bin) 文件中读取数据。这消除了执行期间的字符串解析和浮点转换。

4

0 回答 0