首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java -如何逐字阅读大文件,而不是逐行阅读?

问Java -如何逐字阅读大文件,而不是逐行阅读?
EN

Stack Overflow用户
提问于 2015-11-04 18:18:42
回答 4查看 12.6K关注 0票数 6

我想阅读Java语言中的"text8“语料库,并重新格式化一些单词。问题是,在这个100MB的语料库中,所有的单词都在一行上。因此,如果我尝试使用BufferedReader和readLine加载它,它会一次占用太多空间,并且无法处理将一个列表/数组中的所有单词分开。

所以我的问题是:在Java中,是否可以逐行阅读语料库,而不是逐字阅读?例如,因为所有单词都在一行上,所以每次迭代读取100个单词?

EN

回答 4

Stack Overflow用户

发布于 2015-11-04 18:32:22

您可以尝试使用Scanner,并将分隔符设置为适合您的任何内容:

代码语言:javascript
复制
Scanner input=new Scanner(myFile);
input.useDelimiter(" +"); //delimitor is one or more spaces

while(input.hasNext()){
  System.out.println(input.next());
}
票数 6
EN

Stack Overflow用户

发布于 2015-11-04 18:28:28

我建议您在FileReader中使用“字符流”

以下是来自http://www.tutorialspoint.com/java/java_files_io.htm的示例代码

代码语言:javascript
复制
import java.io.*;

public class CopyFile {
   public static void main(String args[]) throws IOException
   {
      FileReader in = null;
      FileWriter out = null;

      try {
         in = new FileReader("input.txt");
         out = new FileWriter("output.txt");

         int c;
         while ((c = in.read()) != -1) {
            out.write(c);
         }
      }finally {
         if (in != null) {
            in.close();
         }
         if (out != null) {
            out.close();
         }
      }
   }
}

它可以读取16位Unicode字符。这样的话,如果你的文本是整行的,那也没关系。

因为你是一个字一个字地搜索,所以你可以很容易地阅读,直到你偶然发现一个空格,这就是你的词。

票数 2
EN

Stack Overflow用户

发布于 2015-11-04 18:41:40

使用java.util.Scanner的next方法

next方法查找并返回此扫描器中的下一个完整令牌。在完整的令牌之前和之后是与分隔符模式匹配的输入。此方法在等待输入扫描时可能会阻塞,即使上一次调用Scanner.hasNext返回true也是如此。

示例:

代码语言:javascript
复制
public static void main(String[] args) {
        Scanner sc = new Scanner (System.in); 
        String a = sc.next();
        String b = sc.next();
        System.out.println("First Word: "+a);
        System.out.println("Second Word: "+b);
        sc.close();
    }

输入:

Hello Stackoverflow

输出:

第一个词: Hello

第二个词: Stackoverflow

在本例中,使用Scanner读取文件,然后使用scannerobject.next()方法读取每个标记(单词)

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

https://stackoverflow.com/questions/33519217

复制
相关文章

相似问题

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