我觉得将文件存储在字符串中是一种不好的做法。是否有另一种方法可以执行此操作,因为我想比较一个键列表并在文件上执行indexOf(key)。密钥可以在文件中的任何位置。
答案 0 :(得分:1)
String
应该没问题,只要它在没有问题的情况下适合记忆。
更好的选择可能是对文件进行传递并将密钥存储在HashSet
或HashMap
映射中,例如将关键字存储到文件中的偏移量。
答案 1 :(得分:1)
您可以使用BufferedReader一次将数据拉入一个块:
BufferedReader reader = new BufferedReader(
new FileReader(file));
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
...
并测试每个小字符串。您需要跟踪索引,但这会占用更少的内存。
答案 2 :(得分:0)
如果您的文件很大,并且您只是尝试执行indexOf操作,则最好将文件分阶段加载到内存中。在BufferedReader上设置适当的缓冲区,然后读入缓冲区。执行indexOf操作。如果失败,重复此操作,但将缓冲区读取的字符数大小添加到indexOf函数的返回值。
答案 3 :(得分:0)
根据您以这种方式使用文件的原因,这可能是不好的做法。但是,一般情况下,它不是。
如果您将该文件用作美化属性文件,那么您可能需要重新格式化文件中的文本并将其作为属性文件读取。
如果您可以将密钥和值存储在数据库中,那么这比搜索字符串更好。
但是如果你有一个文本文件要搜索它是否包含某些关键字,那么你已经在使用最简单的解决方案了。