Java—逐字符读取文本文件的最快方法
我有近500个1000万字的文本文件。我必须把这些词编入索引。逐字读取文本文件的最快方式是什么?以下是我的初步尝试: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 =
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方法将与最初读取的字符串共享,因此它不会复制。这实际上会比逐个字符地读取它并自行组装它多一些时间。