Java中的自动文件/输入流处理

时间:2012-05-13 17:30:21

标签: java inputstream

序言:我知道Apache IO,并希望评论超出Apache IO的指针。


这可能是一个有点愚蠢的问题,但我才意识到:

当我实现一个必须从输入流中读取的API时,我最终实现了许多重载变体,例如:

public void foo ( InputStream input, int somearg, float someotherarg) { ...

重载变体:

public void foo ( File inputFile, int somearg, float someotherarg) { ...
public void foo ( String filename, int somearg, float someotherarg) { ...

- 或 -

我可以实施

public void foo ( InputStream input, int somearg, float someotherarg) { ...

并实现帮助程序实用程序函数,它们处理文件名,文件并将它们转换为InputStreams。

我的问题是我一直在重新实现这个 - 有没有人写过的图书馆,或者是设计模式中的句柄。

感谢。

2 个答案:

答案 0 :(得分:2)

Guava将此事称为InputSupplier。也许你应该看看。

除此之外,Java 7中还有一个AutoCloseable接口和一个名为try-with-resources的功能,可以简化您的情况(即您只能创建需要InputStream的API方法和程序员可以使用try-with-resources来处理那些具有字符串/文件参数的输入流。)

答案 1 :(得分:0)

您可能正在寻找Apache Commons IO。它有一堆方法可以减少这种事情的开销。