将文件存储在字符串中

时间:2011-05-26 18:50:20

标签: java

我觉得将文件存储在字符串中是一种不好的做法。是否有另一种方法可以执行此操作,因为我想比较一个键列表并在文件上执行indexOf(key)。密钥可以在文件中的任何位置。

4 个答案:

答案 0 :(得分:1)

String应该没问题,只要它在没有问题的情况下适合记忆。

更好的选择可能是对文件进行传递并将密钥存储在HashSetHashMap映射中,例如将关键字存储到文件中的偏移量。

答案 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)

根据您以这种方式使用文件的原因,这可能是不好的做法。但是,一般情况下,它不是。

如果您将该文件用作美化属性文件,那么您可能需要重新格式化文件中的文本并将其作为属性文件读取。

如果您可以将密钥和值存储在数据库中,那么这比搜索字符串更好。

但是如果你有一个文本文件要搜索它是否包含某些关键字,那么你已经在使用最简单的解决方案了。