作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
是否有比以下更简洁/标准的习惯用法(例如,JDK 方法)用于将输入“管道化”到 Java 中的输出?
public void pipe(Reader in, Writer out) {
CharBuffer buf = CharBuffer.allocate(DEFAULT_BUFFER_SIZE);
while (in.read(buf) >= 0 ) {
out.append(buf.flip());
buf.clear();
}
}
[编辑] 请注意 Reader
和 Writer
是给予的。正确答案将演示如何取 in
和 out
并形成一个管道(最好不超过 1 或 2 个方法调用)。我会接受 in
的答案和 out
是InputStream
和一个 OutputStream
(最好是从/到 Reader
/Writer
的转换)。我不会接受任何in
的答案或 out
是 Reader
的子类/InputStream
或 Writer
/OutputStrem
.
最佳答案
IOUtils来自 Apache Commons 项目有许多 utilily methods这正是您所需要的。
IOUtils.copy(in, out)
将执行所有输入到输出的缓冲副本。如果您的代码库中有多个位置需要Stream
或Reader
/Writer
处理,那么使用 IOUtils 可能是个好主意。
关于 "piping"的 Java 习语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/127753/
场景如下: 我将我的应用程序运行所需的几个 .xml(某种配置)文件捆绑在一个 .jar 文件中。 jar 文件具有以下结构: settings-1.0.0.jar ˪ resources/ ˪
我是一名优秀的程序员,十分优秀!