首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BufferedReader到BufferedWriter

BufferedReader到BufferedWriter
EN

Stack Overflow用户
提问于 2011-08-17 16:36:58
回答 5查看 9.3K关注 0票数 2

如何从BufferedReader获取BufferedWriter

我希望能够做这样的事情:

代码语言:javascript
复制
BufferedReader read  = new BufferedReader(new InputStreamReader(...));
BufferedWriter write = new BufferedWriter(read);
EN

回答 5

Stack Overflow用户

发布于 2011-08-17 16:40:12

您可以从Apache commons io中使用以下内容:

代码语言:javascript
复制
IOUtils.copy(reader, writer);

站点here

票数 9
EN

Stack Overflow用户

发布于 2018-05-17 22:56:29

Java9更新

从Java9开始,Reader提供了一个名为transferTo的方法,具有以下签名:

代码语言:javascript
复制
public long transferTo(Writer out)  throws IOException

正如文档所述,transferTo将:

读取此读取器中的所有字符,并按读取的顺序将字符写入给定的写入器。返回时,此读取器将位于流的末尾。此方法既不关闭读取器,也不关闭编写器。此方法可能会无限期地阻止从读取器读取或向写入器写入。读取器和/或写入器被异步关闭或者线程在传输期间被中断的情况下的行为是高度特定于读取器和写入器的,因此没有指定。

如果从读取器读取或写入写入器时发生I/O错误,则可能是在读取或写入某些字符之后发生I/O错误。因此,读取器可能不在流的末端,并且一个流或两个流可能处于不一致状态。强烈建议在发生I/O错误时立即关闭这两个流。

因此,为了将Java Reader的内容写入Writer,您可以这样写:

代码语言:javascript
复制
reader.transferTo(writer);
票数 2
EN

Stack Overflow用户

发布于 2011-08-17 17:12:41

如果你想知道发生了什么:

来自读取器的所有输入都被复制到输入流中

也有类似的东西:

代码语言:javascript
复制
 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上的输入和输出的更多信息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7089914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档