首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java从文件中读取行示例

Java从文件中读取行示例
EN

Stack Overflow用户
提问于 2014-09-02 10:25:20
回答 2查看 130关注 0票数 0

我需要从文件中取样行(文件太大,无法加载到内存中)。我让这个狙击手使用BufferedReader:

代码语言:javascript
复制
    BufferedReader br = new BufferedReader(new FileReader(filename));
    String line;
    long counter = 0; 
    while ((line = br.readLine()) != null && DocCounter < 50000) {}

如何调整代码以从文件中随机抽取50000行?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-02 10:35:02

对任意随机值尝试以下操作,然后在您的情况下将其更改为5000:

代码语言:javascript
复制
String line = reader.readLine();
for (int i = 0; i < randomInt + 1; i++) {
  line = reader.readLine();
}
票数 0
EN

Stack Overflow用户

发布于 2014-09-02 22:38:08

要随机抽样50000行,您必须知道文件中的行总数,这样就可以在整个文件中分发示例(并确保不会过早用完行数)。

基本方法是定义初始跳过值。

代码语言:javascript
复制
k = n/50000

其中n是行总数。然后循环遍历生成范围内的随机数的文件。

代码语言:javascript
复制
s = k ± e

其中e是k的某个分数,在每次迭代中跳过s行时,取样一行,然后根据跳过后剩下的行数重新计算k。即在第一次迭代之后

代码语言:javascript
复制
t += s+1
k = (n-t)/49999

等等,每次更新分母。当您接近文件末尾时,请注意整数除法边界条件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25621159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档