我有一个包含数千行数据的文本文件,如下所示:
38.48,88.25
48.20,98.11
100.24,181.39
83.01,97.33
...并且列表继续进行(就像这样的数千行)。
我想出了如何使用FileReader和Scanner将这些数据分成可用的令牌,但这种方法太慢了。
我创建了以下分隔符: src.useDelimiter(",|\n");
然后使用扫描器类 nextDouble() 来获取每条数据。
我做了很多研究,看起来解决方案是使用MappedByteBuffer将数据放入内存并在那里访问它。问题是我不知道如何使用 MappedByteBuffer 将这些数据分成可用的令牌。
我找到了这个网站: http: //javarevisited.blogspot.com/2012/01/memorymapped-file-and-io-in-java.html - 它可以帮助我将文件映射到内存并解释如何读取文件但看起来数据以字节或二进制形式返回?我试图访问的文件是 ascii,我也需要能够以 ascii 格式读取数据。谁能解释如何做到这一点?有没有一种方法可以像使用扫描仪和以前的 FileReader 方法一样扫描映射到内存中的文件?还是有另一种更快的方法?我目前的方法花费的时间几乎是它应该花费的时间的 800 倍。
我知道有些人可能会说我正在尝试重新发明轮子,但这是出于学术目的,因此我不允许使用外部库。
谢谢!