读取文件一次并多次使用该数据

时间:2011-01-27 07:04:13

标签: java file-io

我写了一个java类,它读取一个文件并将每一行存储在一个arraylist中。我想多次访问这个arraylist。每次调用类来访问arraylist时,它都会再次读取该文件。我想要一次读取文件,然后多次访问arraylist。我怎么能这样做?

4 个答案:

答案 0 :(得分:4)

将其存储在课程的某个字段中。即:

public class Foo {
   private List<String> list;

   public List<String> readData() {
       if (list != null) { 
           return list;
       }
       // do the reading.
   }
}

请注意,如果在多线程环境中使用它,则必须采取额外措施。例如,将synchronized放在方法上。

正如彼得指出的那样,如果您可以阅读多个文件,那么您可以使用Map<String, List<String>>

另一个注意事项是,您应该只使用此类的一个实例。如果您创建多个实例,则无法获得所需的效果。

答案 1 :(得分:1)

听起来你应该在类的构造上阅读文件,而不是在访问它时。这并不一定意味着 in 构造函数,请注意 - 您可能希望有一个静态工厂方法将文件读入ArrayList,然后将该列表传递给实际构造函数。这将使类更容易测试(并在其他测试中使用)。

然后,您只需要创建一次类,并使其余代码使用相同的实例。请注意,此需要使用单例模式,这本身会使测试更加困难。它只是意味着将实例传播到需要它的所有代码。

答案 2 :(得分:0)

也许你需要制作一个单身人士?然后,您将只读取一次文件 - 当您创建一个真正新的类实例时。

答案 3 :(得分:0)

如果它是一个Web应用程序,也许你会考虑将它存储在ServletContext或用户HttpSession中,具体取决于文件的更改量