InputStream inputStream = new ByteArrayInputStream(str.getBytes());
1 package org.kodejava.example.io;
2
3 import java.io.ByteArrayInputStream;
4 import java.io.InputStream;
5
6 public class StringToStream {
7 public static void main(String[] args) {
8 String text = "Converting String to InputStream Example";
9
10 /*
11 * Convert String to InputString using ByteArrayInputStream class.
12 * This class constructor takes the string byte array which can be
13 * done by calling the getBytes() method.
14 */
15 try {
16 InputStream is = new ByteArrayInputStream(text.getBytes("UTF-8"));
17 } catch (UnsupportedEncodingException e) {
18 e.printStackTrace();
19 }
20 }
21 }
22
1、字符串轉(zhuǎn)inputStream
- String string;
- //......
- InputStream is = new ByteArrayInputStream(string.getBytes());
2、InputStream轉(zhuǎn)字符串
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- int i;
- while ((i = is.read()) != -1) {
- baos.write(i);
- }
- String str = baos.toString();
- System.out.println(str);
3、String寫入OutputStream
- OutputStream os = System.out;
- os.write(string.getBytes());
4、OutputStream寫入String
這聽起來有點(diǎn)荒謬,OutputStream本來就是輸出源,還寫入String?
不過最近項(xiàng)目里確實(shí)遇到了個(gè)類似的問題,比如 SOAPMessage.writeTo(OutputStream os) 這個(gè)方法,是將SOAPMessage的內(nèi)容寫到一個(gè)輸出流中,而我想得到這個(gè)流的內(nèi)容,總不能把他先寫進(jìn)文件再去讀這個(gè)文件吧,研究了好半天,終于想起可以如下這般:
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- //向OutPutStream中寫入,如 message.writeTo(baos);
- String str = baos.toString();
將InputStream/OutputStream轉(zhuǎn)換成string
這里需要用到一個(gè)特殊的類ByteArrayOutputStream,利用他,我們可以將輸出流在內(nèi)存中直接轉(zhuǎn)換成String類型。
具體代碼如下:
首先從輸入流中將數(shù)據(jù)讀出來寫入ByteArrayOutputStream,然后再將其轉(zhuǎn)換成String.
- InputStream in = urlconn.getInputStream();//獲取輸入流
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- //讀取緩存
- byte[] buffer = new byte[2048];
- int length = 0;
- while((length = in.read(buffer)) != -1) {
- bos.write(buffer, 0, length);//寫入輸出流
- }
- in.close();//讀取完畢,關(guān)閉輸入流
- // 根據(jù)輸出流創(chuàng)建字符串對(duì)象
- new String(bos.toByteArray(), "UTF-8");
- //or
- //bos.toString("UTF-8");
根據(jù)同樣的原理,我們可以將outputstream直接轉(zhuǎn)換成String對(duì)象。
指定一下字符集
byte[] b = str.getBytes("utf-8");
String s = new String(b,"utf-8");
OUTPUTSTREAM中方法WRITE用法
void write(byte[] b) 將 b.length 個(gè)字節(jié)從指定的 byte 數(shù)組寫入此輸出流。 void write(byte[] b, int off, int len) 將指定 byte 數(shù)組中從偏移量 off 開始的 len 個(gè)字節(jié)寫入此輸出流。 abstract void write(int b) 將指定的字節(jié)寫入此輸出流。轉(zhuǎn)載地址:http://blog.csdn.net/soundtravel/article/details/6927006