InputStream提供的是字节流的读取,而非文本读取,用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组。
Reader类及其子类提供的字符流的读取char,inputStream及其子类提供字节流的读取byte,所以 FileReader类是将文件按字符流的方式读取,FileInputStream则按字节流的方式读取文件;InputStreamReader可以将读如stream转换成字符流方式,是reader和stream之间的桥梁
package cn.guolf.activiti;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringBufferInputStream;
import java.io.UnsupportedEncodingException;
@SuppressWarnings("deprecation")
public class Demo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public String getStrFromInputSteam(InputStream in){
BufferedReader bf = null;
try {
bf = new BufferedReader(new InputStreamReader(in,"UTF-8"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//最好在将字节流转换为字符流的时候 进行转码
StringBuffer buffer=new StringBuffer();
String line="";
try {
while((line=bf.readLine())!=null){
buffer.append(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return buffer.toString();
}
/**
* 利用BufferedReader实现Inputstream转换成String <功能详细描述>
* @param in
* @return String
*/
public static String Inputstr2Str_Reader(InputStream in, String encode) {
String str = "";
try {
if (encode == null || encode.equals("")) {
// 默认以utf-8形式
encode = "utf-8";
}
BufferedReader reader = new BufferedReader(new InputStreamReader(
in, encode));
StringBuffer sb = new StringBuffer();
while ((str = reader.readLine()) != null) {
sb.append(str).append("\n");
}
return sb.toString();
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
/**
* 利用byte数组转换InputStream------->String <功能详细描述>
* @param in
* @return
* @see [类、类#方法、类#成员]
*/
public static String Inputstr2Str_byteArr(InputStream in, String encode) {
StringBuffer sb = new StringBuffer();
byte[] b = new byte[1024];
int len = 0;
try {
if (encode == null || encode.equals("")) {
// 默认以utf-8形式
encode = "utf-8";
}
while ((len = in.read(b)) != -1) {
sb.append(new String(b, 0, len, encode));
}
return sb.toString();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
/**
* 利用ByteArrayOutputStream:Inputstream------------>String <功能详细描述>
* @param in
* @return
* @see [类、类#方法、类#成员]
*/
public static String Inputstr2Str_ByteArrayOutputStream(InputStream in,
String encode) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int len = 0;
try {
if (encode == null || encode.equals("")) {
// 默认以utf-8形式
encode = "utf-8";
}
while ((len = in.read(b)) > 0) {
out.write(b, 0, len);
}
return out.toString(encode);
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
/**
* 利用ByteArrayInputStream:String------------------>InputStream <功能详细描述>
* @param inStr
* @return
* @see [类、类#方法、类#成员]
*/
public static InputStream Str2Inputstr(String inStr) {
try {
// return new ByteArrayInputStream(inStr.getBytes());
// return new ByteArrayInputStream(inStr.getBytes("UTF-8"));
return new StringBufferInputStream(inStr);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public InputStream getInputStreamFromString(String str){
InputStream in=new ByteArrayInputStream(str.getBytes());
return in;
}
}
相关推荐
- 使用`BufferedReader`和`InputStreamReader`:首先,通过`InputStreamReader`将InputStream转换为字符流,然后使用`BufferedReader`逐行读取并拼接成字符串。 ```java InputStream is = ...; ...
在Java编程中,String对象和Byte类型的转换是常见的操作,特别是在网络编程中,因为网络通信通常涉及字节流的处理。下面将详细讲解Java中如何进行这两种类型之间的转换,并探讨其在网络编程中的应用。 首先,让我们...
总结,Android通过内置的Base64工具类可以轻松地完成文件与String之间的转换,这对于数据传输和存储非常有用。只要理解了Base64编码的基本原理和Android提供的API,就可以高效地实现这种转换。在实际项目中,根据...
总结来说,Java中InputStream、String和File的相互转化是编程中常见的操作,理解并掌握这些转换方法对于提升开发效率和代码质量至关重要。在进行转换时,要结合具体场景,选择合适的方法,同时注意性能优化和资源...
在Java编程中,有时我们可能需要将一个已经写入数据的`OutputStream`转换为`InputStream`,以便重新读取这些数据。这种情况通常出现在临时存储或处理数据时,例如在网络传输或者存储到内存中的场景。本篇文章将深入...
- **Java I/O操作**: 在Java中进行I/O操作时,通常涉及到`InputStream`和`OutputStream`等类,这些类通常操作的是`byte[]`。因此,在处理文本数据时,需要特别注意字符集的选择。 - **网络通信**: 在Web开发中,处理...
在Java编程中,将字符串(String)与图像(Image)相互转换是一项常见的需求,特别是在处理用户输入、数据存储或显示图形信息时。这篇博文将探讨如何在Java中实现这一过程,主要涉及`Image`对象与`String`对象之间的转换...
本文主要介绍了 Java 实现 InputStream 流的复制代码实例,通过示例代码详细地介绍了如何复制 InputStream 对象,并提供了实际的应用场景和解决方案。 InputStream 基础知识 在 Java 中,InputStream 是一个抽象类...
if (inputStream.available() > 5 && new String(inputStream.readNBytes(5)).equals("DOPC\x05")) { // 处理Word 2003 (.doc) HWPFDocument doc = new HWPFDocument(inputStream); return ...
在IT领域,编码格式是处理文本数据时至关重要的部分,特别是在多语言环境下。本文将深入探讨几种常见的编码格式,如GB2312、...在实际开发中,我们还需要根据具体需求,结合Stream类进行更复杂的数据读写和转换操作。
- **序列化/反序列化的异常**:如果对象的属性包含不可序列化的类型(如`InputStream`),或者没有默认构造函数,可能会导致转换失败。 - **字段映射**:当对象的字段名与JSON键不一致时,可以使用注解(如Jackson...
### WebService接口接收XML与String代码解析 #### 一、概述 在现代软件开发中,WebService作为一种基于HTTP协议的应用程序接口(API),广泛应用于不同系统之间的数据交换与服务调用。本篇文章将根据提供的代码示例...
`Big2Gb.java` 类的实现可能包括使用`InputStream`和`OutputStream`来读写对照表文件,使用`BufferedReader`和`BufferedWriter`进行字符串读写操作,以及使用`Charset`和`CharsetDecoder`等Java内置的字符编码工具...
Java提供了`InputStream`和`OutputStream`处理原始字节流,而`Reader`和`Writer`则用于处理字符流,它们负责将字节转换为字符或将字符转换为字节。在处理汉字时,推荐使用`FileReader`和`FileWriter`,它们会按照...
2. **创建Reader**:为了读取文本内容,我们需要将`InputStream`转换为`Reader`。可以使用`InputStreamReader`实现,指定适当的字符编码,如UTF-8: ```java InputStreamReader isr = new InputStreamReader(bis, ...
import java.io.InputStream; import java.net.URL; public class HtmlToPdfConverter { public static void main(String[] args) throws IOException { String htmlContent = "<h1>Hello, iText 7!</h1><p>这是...
Java提供`InputStream`和`OutputStream`来处理原始字节数据,而`Reader`和`Writer`则负责读写和编码转换。对于包含汉字的文件,推荐使用`FileReader`和`FileWriter`,它们基于JVM的默认编码。若文件编码不同,需要...
- `InputStreamReader` 和 `OutputStreamWriter`:它们可以与`InputStream`和`OutputStream`结合使用,用于在字节流和字符流之间进行编码转换。 - `BufferedReader` 和 `BufferedWriter`:提供缓冲功能,提高读写...
在Java中,可以使用InputStreamReader和BufferedReader将InputStream转换为字符流,然后读取字符串。反之,使用OutputStreamWriter和BufferedWriter将字符串写入OutputStream。工具类可能包含这样的方法,以便在接收...
Java繁简转换工具类是Java编程语言中用于处理文本繁简体转换的一种实用程序。在开发涉及中文内容的应用时,这种工具类非常有用,尤其是在需要处理不同地区用户输入或者显示内容时,例如中国大陆通常使用简体中文,而...