【问题标题】:Convert BufferedReader to InputStream将 BufferedReader 转换为 InputStream
【发布时间】:2013-09-11 19:47:21
【问题描述】:

我有一个 API 有一个需要 InputStream 参数的有用方法。我要提供给此方法的数据当前由 BufferedReader 表示。该库已准备好处理字节流,我将提供字符数据。

我不会在不同的编码之间进行更改。

我已经花费了似乎过多的时间来尝试发现我确信这是执行此操作的标准方法,但似乎没有。我不想将我所有的数据读入内存,所以字节数组输入流出来了。

我想我可以自己写一个——对我的输入流的读取会调用 readLine(或者只是读取一个缓冲区)来获取一些字节,然后从中返回一个编码的字节数组。但我必须这样做吗?其他人不是已经完成了所有的计算和错误检查以及所有第一次很难正确的废话吗?

【问题讨论】:

  • 听起来 your 库应该传递 InputStream 而不是 Reader。
  • 其他答案去哪儿了?我正在重新登录以接受它。
  • @Louis Wasserman 我的图书馆自然地处理字符;它正在读取一个文本文件。我正在使用的库用于 FTP 传输,并且自然以字节为单位。我认为两者都在处理适当级别的 IO。而且我仍然认为他们之间应该有一种标准的翻译方式,或者也许有,但我还不知道。

标签: java io bufferedreader


【解决方案1】:

appache commons-io 的标题ReaderInputStream 来看,您可能会感兴趣。

【讨论】:

  • 当心。 ReaderInputStream 在所选编码不支持阅读器的所有字符时挂起。
【解决方案2】:

你可能想做这样的事情:

URL url = new URL("http://myurl.com");
HttpURLConnection huc = (HttpURLConnection) url.openConnection();

BufferedReader rd = null;
InputStream is = huc.getInputStream();

rd = new BufferedReader(new InputStreamReader(is));

// Do Something

rd.close();

【讨论】:

    猜你喜欢
    • 2011-07-09
    • 2013-09-18
    • 2014-04-23
    • 2011-08-11
    • 2018-07-19
    • 1970-01-01
    • 2020-02-16
    • 2011-03-30
    • 1970-01-01
    相关资源
    最近更新 更多