【问题标题】:Java equivalent to C#'s StreamReader.ReadToEnd()Java 等价于 C# 的 StreamReader.ReadToEnd()
【发布时间】:2013-05-26 12:16:18
【问题描述】:

什么是 Java 等价于以下内容

// C#
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
    String responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
    ....
}

目前我有

//Java
HttpResponse response = httpclient.execute(request);

InputStream responseBody = response.getEntity().getContent();

【问题讨论】:

标签: c# java inputstream streamreader


【解决方案1】:

我认为您正在使用的 Apache 的 http 客户端带有一个 EntityUtils 类,用于从方法中获取字符串。

此方法使用响应中指定的字符编码。如果需要不同的编码,可以使用重载。

HttpResponse response = httpclient.execute(request);
String responseString = EntityUtils.toString(response.getEntity);

【讨论】:

    【解决方案2】:

    这可能有点长,但如果您不想使用 3rd 方库,您可以这样做:

    InputStream stream = new FileInputStream("file");
    byte[] b = new byte[stream.available()];
    stream.read(b);
    String file = new String(b);
    

    【讨论】:

    • 从字节到字符时最好指定编码。
    • 这看起来不错。但是,请问是什么确保这实际上读取到 InputStream 的末尾,特别是如果它是来自套接字连接的输入流?
    • stream.available() 可能包含也可能不包含一个正好是要读取的数量的数字。这不是一种可靠的技术。
    猜你喜欢
    • 1970-01-01
    • 2010-10-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    相关资源
    最近更新 更多