【问题标题】:Fetching data from InputStream in java从java中的InputStream中获取数据
【发布时间】:2020-11-23 18:34:45
【问题描述】:

我正在尝试使用 InputStreamReader 从 InputStream 中获取数据,我的代码如下所示。

protected String doInBackground(String... urls) {
    String result = "";
    URL url;
    HttpURLConnection urlConnection = null;

    try {
        url = new URL(urls[0]);
        urlConnection = (HttpURLConnection) url.openConnection();
        InputStream in = urlConnection.getInputStream();
        InputStreamReader reader = new InputStreamReader(in);

        int data = reader.read();
        while (data != -1) {
            char current = (char) data;
            result += current;
            data = reader.read();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return result;
}

我在理解上遇到了一个问题,result += current 语句是如何工作的。根据我的理解,似乎char current 数据正在传输到result,但current 是一个转换为char 的整数,如果current 是一个转换为char 的整数,则传输到result。那么,我将如何从 InputStream 中提取每一行,结果打印转换为 char 的整数而不是 InputStream 中的行。

我知道,我想错了,但我无法理解。

请帮助我了解这是如何工作的:)

【问题讨论】:

  • 我会使用 BufferedReader,这样我就可以使用 BufferedReader#readLine()。
  • 从服务器获取的数据是什么样的?
  • 你能指出代码的哪一部分你不明白吗?
  • 实际上我获取的数据是网站的html。所以,我到底无法理解的是方法 reader.read() 从服务器读取一行是 html 代码。因此,这个 html 代码是一个字符串类型的数据。但是这里 reader.read() 等于转换为 char current 后的 int 数据,这是在从 int 数据转换为 char 之后将该字符串数据(html 代码)转换为 char current。那么,这怎么可能在字符转换之后将该字符串数据(html 代码)传输到 int 数据?很抱歉语法和拼写错误,我会改进的。谢谢。

标签: java android inputstream inputstreamreader


【解决方案1】:

我想你正在寻找

BufferedReader r = BufferedReader(new InputStreamReader(in));
List<String> lines  = r.readLines();

【讨论】:

  • 谢谢。但是在上面的问题中,出于好奇,我试图了解该特定代码的功能。顺便说一句,这段代码很简单,很容易应用,我肯定会在我的项目中使用 BufferedReader。
猜你喜欢
  • 2014-04-08
  • 1970-01-01
  • 2013-10-01
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多