序言:我知道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。
我的问题是我一直在重新实现这个 - 有没有人写过的图书馆,或者是设计模式中的句柄。
感谢。
答案 0 :(得分:2)
Guava将此事称为InputSupplier
。也许你应该看看。
除此之外,Java 7中还有一个AutoCloseable接口和一个名为try-with-resources的功能,可以简化您的情况(即您只能创建需要InputStream
的API方法和程序员可以使用try-with-resources来处理那些具有字符串/文件参数的输入流。)
答案 1 :(得分:0)
您可能正在寻找Apache Commons IO。它有一堆方法可以减少这种事情的开销。