注:我目前使用java编码。我正在寻找将输入数据读入一个字符串,每次只读一行(或更多),并且我期望有很多总行数。从扫描仪或BufferedReader读取STDIN多行数据的方法更快吗?
现在我已经因为该行我输入是空间分隔的内实施
scanner in = new Scanner(System.in)
while (in.hasNextLine()) {
separated = in.nextLine().split(" ");
...
}
。
不幸的是,有了数百万行这个过程非常慢,他的扫描程序比我的数据处理占用更多的时间,所以我查看了java.io库,发现了一堆可能性,我不确定哪个一个使用(ByteArrayInputStream
,FileInputStream
,BufferedInputStream
,PipedInputStream
)。我应该使用哪一个?
要指定,我的数据从文本文件输入,每行有4或6个单词以换行符结尾,我需要一次分析一行,设置(4或6)我可以暂时管理一个数组。 数据格式:
392903840 a c b 293 32.90
382049804 a c 390
329084203 d e r 489 384.90
...
有没有办法在那里扫描器可以读取1000行左右的时间和效率成为或者这些数据类型的,我应该使用(尽量减少速度)?
旁注:当实验我曾尝试:
java.io.BufferedReader stdin = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
while(in.ready()){
separated = in.readLine().split(" ");
...
}
哪个效果不错,只是不知道哪一个最,如果有任何办法,说,读100线成数据一次,然后处理一切。太多选择寻找最佳解决方案。
嗨丹,这工作真的很好。我现在没有使用扫描仪,但仍然浪费了大量时间,因为阅读一条线似乎需要时间。有没有一种方法可以读取线条(系统。在,1000)或类似的东西,只是抓住一堆线,因为我期望(大部分时间)如果我有一条线,我应该有几十万? – user636224 2011-03-02 19:46:16
您可以为'BufferedReader'构造函数提供额外的参数来提供缓存大小。这样,如果你想缓冲大量的数据,你可以提供一个非常大的缓冲区,比如32 MB。 – Dan 2011-03-02 20:04:04