【发布时间】:2011-08-27 16:14:38
【问题描述】:
我想要一个返回BufferedReader 对象列表的方法(例如目录中的所有文件):
private List<BufferedReader> getInputReaders(List<String> filenames) {
List<BufferedReader> result = new ArrayList<BufferedReader>();
for(String filename : filenames)
result.add(new BufferedReader(new InputStreamReader(new FileInputStream(filename), "UTF-8")));
}
return result;
}
这是否会严重浪费资源?
所有这些流是否会在创建时打开并保持如此状态从而占用系统资源?
如果是,我是否可以在不实际打开流的情况下以“被动”模式创建这些阅读器,或者是否有任何其他解决方法(这样我可以安全地构建一个包含数千个阅读器的列表)?
【问题讨论】:
-
为什么不在需要的时候创建阅读器?
-
@Kevin 我简化了任务,我需要处理混合了 url 的文件名以及带有文件名过滤器的目录等。我想将所有这些隐藏在一个单独的方法中,并且只有一个列表读者在最后。
-
你能在一个类中“隐藏”混合的 url 并将其提供给工厂或其他返回适当读取器实例的类吗?
-
@Kevin 我可以,但我想看看我是否可以先列出读者名单,因为这对我来说是一个更简单的解决方案。