`

将输入流InputStream转换为String

    博客分类:
  • Java
阅读更多

    最近项目中用apache的httpclient中get、post、put、delete方法去请求url而这些方法请求之后响应回的数据可能很大就调用getResponseBodyAsString()方法,而响应后的数据要转换成string类型,同里也在网上看到有人需要将InputStream转换为String对象,这里我要跟大家说一下,这样的InputStream需要从文本文件(即纯文本的数据文件)中读取内容,然后将它的内容读出到一个String对象中。我下面直接给出代码,然后讲解下:

package tk.hecks.blog.io;    
   
import java.io.BufferedReader;    
import java.io.IOException;    
import java.io.InputStream;    
import java.io.InputStreamReader;    
import java.util.Properties;    
   
public class StreamToString {    
   
    public static void main(String[] args) {    
         StreamToString sts = new StreamToString();    
            
        /* 
          * Get input stream of our data file. This file can be in the root of 
          * you application folder or inside a jar file if the program is packed 
          * as a jar. 
          */   
         InputStream is = sts.getClass().getResourceAsStream("/data.txt");    
   
        /* 
          * Call the method to convert the stream to string 
          */   
         System.out.println(sts.convertStreamToString(is));    
     }    
        
    public String convertStreamToString(InputStream is) {    
        /* 
          * To convert the InputStream to String we use the BufferedReader.readLine() 
          * method. We iterate until the BufferedReader return null which means 
          * there's no more data to read. Each line will appended to a StringBuilder 
          * and returned as String. 
          */   
         BufferedReader reader = new BufferedReader(new InputStreamReader(is));    
         StringBuilder sb = new StringBuilder();    
   
         String line = null;    
        try {    
            while ((line = reader.readLine()) != null) {    
                 sb.append(line + "\n");    
             }    
         } catch (IOException e) {    
             e.printStackTrace();    
         } finally {    
            try {    
                 is.close();    
             } catch (IOException e) {    
                 e.printStackTrace();    
             }    
         }    
   
        return sb.toString();    
     }    
}   

 如果大家学习过Java IO部分的API,相信大家对上面的代码应该比较容易理解。我大致的讲解下,主要讲解convertStreamToString方法,它是主要的转换方法。我们首先将InputStream转换为BufferedReader对象,该对象用于读取文本。然后我们就一行行的读取文本数据并加入到StringBuilder中(这里也可以用StringBuffer对象)。这里主要主意的地方是while的结束条件是当读取到的字符串为null。然后在最后将StringBuilder对象转换为字符串返回回去。

该代码大家可以自己运行下试试。希望能够帮助大家解决遇到的问题。

来源:Heck's Blog
地址:http://www.hecks.tk/httpclient-getresponsebodyasstream-stream-string/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!

分享到:
评论

相关推荐

    将输出流OutputStream转化为输入流InputStream的方法

    在Java编程中,有时我们可能需要将一个已经写入数据的`OutputStream`转换为`InputStream`,以便重新读取这些数据。这种情况通常出现在临时存储或处理数据时,例如在网络传输或者存储到内存中的场景。本篇文章将深入...

    文件转换(inputString)

    - 使用`BufferedReader`和`InputStreamReader`:首先,通过`InputStreamReader`将InputStream转换为字符流,然后使用`BufferedReader`逐行读取并拼接成字符串。 ```java InputStream is = ...; ...

    Java String与Byte类型转换

    - **使用InputStream**: 当从输入流读取字节时,可以先用`InputStream.read()`方法读取字节,然后使用`new String(bytes)`构造函数构建字符串。 在**网络编程**中,这两种类型的转换至关重要,因为网络传输的数据...

    java 中InputStream,String,File之间的相互转化对比

    将一个String转化为InputStream,主要是将字符串转换成字节数组,然后创建一个ByteArrayInputStream。这种方法简单快捷,但会占用一定的内存空间。示例代码如下: ```java public InputStream string2...

    Java实现inputstream流的复制代码实例

    这是因为 InputStream 对象的数据源是一次性的,读取完成后就关闭了输入流。 克隆 InputStream 对象 由于 InputStream 对象不能复制,也没有实现 Cloneable 接口,所以我们需要想出其他方法来克隆它。在本文中,...

    多文件输入流类的使用

    本篇文章将深入探讨如何使用多文件输入流类来实现这一功能。 首先,我们要了解Java中的`java.io`包,这个包提供了大量的流类用于文件的读写。其中,`FileInputStream`和`FileOutputStream`是基础的单个文件输入/...

    java输入输出流的简单例子

    Java的输入输出流分为字节流和字符流两大类,每类又分别有输入流和输出流四种类型,即InputStream、OutputStream、Reader和Writer。下面我们将深入探讨这些概念,并通过一个简单的例子来说明其使用方法。 字节流...

    java中的标准输入输出流

    为了能够更高效地处理标准输入流,通常需要将其包装为更高层次的流。例如,可以使用`InputStreamReader`将`System.in`转换为`Reader`类型,然后再进一步包装为`BufferedReader`,以便于逐行读取输入数据。 ```java ...

    Java流(文件读写操作)

    - **InputStream类层次**:所有输入流的父类都是`InputStream`。 - **OutputStream类层次**:所有输出流的父类都是`OutputStream`。 - **Reader类层次**:所有字符输入流的父类都是`Reader`。 - **Writer类层次**:...

    Java字节流与字符流的介绍.pdf

    FilterInputStream 类的构造方法为 FilterInputStream(InputStream),在指定的输入流之上,创建一个输入流过滤器。FilterInputStream 的常用的子类如下: 1. BufferedInputStream:缓冲区对数据的访问,以提高效率 ...

    Java输入/输出流体系详解

    InputStreamReader可以将字节输入流转换为字符输入流,而OutputStreamWriter可以将字节输出流转换为字符输出流。 例如,使用InputStreamReader可以将字节输入流转换为字符输入流,并使用BufferedReader读取文件的一...

    String Image之间相互转化

    在Java编程中,将字符串(String)与图像(Image)相互转换是一项常见的需求,特别是在处理用户输入、数据存储或显示图形信息时。这篇博文将探讨如何在Java中实现这一过程,主要涉及`Image`对象与`String`对象之间的转换...

    Java IO流文档

    接下来的部分将继续讨论用于封装以字符为导向的输入流的类,如`BufferedReader`等,以及如何使用它们来提高程序的性能和灵活性。这些类通常提供了一些高级功能,比如读取整个行(`readLine`)等,从而简化了文本文件的...

    Java实现的两个工具类,解决从键盘输入后,获得各种数据的问题的工具包及把socket字节流中包含的数据转换成字符串

    在Java中,可以使用InputStreamReader和BufferedReader将InputStream转换为字符流,然后读取字符串。反之,使用OutputStreamWriter和BufferedWriter将字符串写入OutputStream。工具类可能包含这样的方法,以便在接收...

    Java 从网络中读取图片 转换成Base64字符串

    在Java编程中,将网络上的图片读取并转换为Base64字符串是一项常见的任务,尤其在Web开发中,这样的操作可以用于数据传输或者存储。Base64是一种编码方式,能够将二进制数据转化为可打印的ASCII字符,方便在网络上...

    字节流工具

    - 将InputStream转换为byte数组:可以使用ByteArrayOutputStream来实现。通过调用InputStream的read()方法,将数据读取到ByteArrayOutputStream中,然后调用其toByteArray()方法获取byte数组。 - 将byte数组转换为...

    java之精髓IO流

    - **StringBufferInputStream**:将字符串转换为输入流,按字节读取数据。在处理文本数据时,通常不建议直接使用此流,因为存在编码问题。 - **FileInputStream**:将本地文件作为输入流使用,用于读取文件内容。 ...

    自己总结的IO流操作

    本文档主要涉及Java中的IO流操作,包括输出流(OutputStream)、输入流(InputStream)、对象流(ObjectOutputStream与ObjectInputStream)、字符输出流(Writer)及字符输入流(Reader)等核心概念与使用方法。...

    JAVA输入输出流资料

    - `InputStreamReader` 从字节输入流读取字节并转换为字符。 **字符流的过滤器流**: - `FilterReader` 和 `FilterWriter` 提供了对字符输入和输出流的过滤和扩展功能,例如 `BufferedReader` 和 `BufferedWriter` ...

    java io 流,文件读取操作

    输入流用于从外部设备读取数据,而输出流用于将数据写入到外部设备。另一种分类方式是按照流的数据单位不同,分为字节流和字符流。字节流处理二进制数据,而字符流处理文本数据。最后一种分类方式是按照流的功能不同...

Global site tag (gtag.js) - Google Analytics