如何从BufferedReader获取BufferedWriter
我希望能够做这样的事情:
BufferedReader read = new BufferedReader(new InputStreamReader(...));
BufferedWriter write = new BufferedWriter(read);发布于 2011-08-17 16:40:12
您可以从Apache commons io中使用以下内容:
IOUtils.copy(reader, writer);站点here
发布于 2018-05-17 22:56:29
Java9更新
从Java9开始,Reader提供了一个名为transferTo的方法,具有以下签名:
public long transferTo(Writer out) throws IOException正如文档所述,transferTo将:
读取此读取器中的所有字符,并按读取的顺序将字符写入给定的写入器。返回时,此读取器将位于流的末尾。此方法既不关闭读取器,也不关闭编写器。此方法可能会无限期地阻止从读取器读取或向写入器写入。读取器和/或写入器被异步关闭或者线程在传输期间被中断的情况下的行为是高度特定于读取器和写入器的,因此没有指定。
如果从读取器读取或写入写入器时发生I/O错误,则可能是在读取或写入某些字符之后发生I/O错误。因此,读取器可能不在流的末端,并且一个流或两个流可能处于不一致状态。强烈建议在发生I/O错误时立即关闭这两个流。
因此,为了将Java Reader的内容写入Writer,您可以这样写:
reader.transferTo(writer);发布于 2011-08-17 17:12:41
如果你想知道发生了什么:
来自读取器的所有输入都被复制到输入流中
也有类似的东西:
private final void copyInputStream( InputStreamReader in, OutputStreamWriter out ) throws IOException
{
char[] buffer=new char[1024];
int len;
while ( ( len=in.read(buffer) ) >= 0 )
{
out.write(buffer, 0, len);
}
}有关The Really big Index上的输入和输出的更多信息
https://stackoverflow.com/questions/7089914
复制相似问题