Java—逐字符读取文本文件的最快方法

Java—逐字符读取文本文件的最快方法,java,file-io,Java,File Io,我有近500个1000万字的文本文件。我必须把这些词编入索引。逐字读取文本文件的最快方式是什么?以下是我的初步尝试: InputStream ist = new FileInputStream(this.path+"/"+doc); BufferedReader in = new BufferedReader(new InputStreamReader(ist)); String line; while((line = in.readLine()) != null){ line =

我有近500个1000万字的文本文件。我必须把这些词编入索引。逐字读取文本文件的最快方式是什么?以下是我的初步尝试:

InputStream ist = new FileInputStream(this.path+"/"+doc);
BufferedReader in = new BufferedReader(new InputStreamReader(ist));

String line;

while((line = in.readLine()) != null){


   line = line.toUpperCase(Locale.ENGLISH);
    String word = "";

    for (int j = 0; j <= line.length(); j++) {
         char  c= line.charAt(j);
     // OPERATIONS

}
InputStream ist=新文件InputStream(this.path+“/”+doc);
BufferedReader in=新的BufferedReader(新的InputStreamReader(ist));
弦线;
而((line=in.readLine())!=null){
line=line.toUpperCase(Locale.ENGLISH);
字串=”;
for(int j=0;jInputStreamReader的read()方法可以一次读取一个字符

您可以将其包装在FileReader或BufferedReader或示例中

希望这有帮助!

read()
不会给性能带来很大的差异

阅读更多:

现在,回到您最初的问题:
输入字符串:
你好吗?

因此,您需要索引该行的单词,即:

BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = r.readLine()) != null) {
   String[] splitString = line.split("\\s+");
   //Do stuff with the array here, i.e. construct the index.
}

注意:模式
\\s+
将把分隔符作为任何空格(如制表符、空格等)放入字符串中。

不读取行,然后逐字符重新扫描行。这样,您将处理每个字符两次。只需通过BufferedReader.read()读取字符.

这看起来很好……这种方法有什么问题?这不是一次读取一个字符,而是为什么一个字符一个字符地读取?第一:正如蒂姆所说,这不是一个字符一个字符地读取。请更改标题。第二:这听起来像是微不足道的数据量。第三:这听起来像只运行一次。你为什么关心performan你的应用程序应该在你问这个问题的时候完成。(不要生气,我的意思是:不要担心性能,直到它真的成为问题)这也很好,因为split方法将与最初读取的字符串共享,因此它不会复制。这实际上会比逐个字符地读取它并自行组装它多一些时间。