java string 转 inputstream_String和inputstream互转【转文】
URLConnection urlConn = url.openConnection(); // 打開網站鏈接s
BufferedReader reader = new BufferedReader(new InputStreamReader(urlConn.getInputStream(), "UTF-8")); // 實例化輸入流,并獲取網頁代碼
String s; // 依次循環,至到讀的值為空
StringBuilder sb = new StringBuilder();
while ((s = reader.readLine()) != null) {
sb.append(s);
}
reader.close();
String str = sb.toString();
====================下面的方法有點惡心,改了改,看起來好多了===========================
String ? str ? = ? "";//add ? your ? string ? content
InputStream ? inputStream ? = ? new ? ByteArrayInputStream(str.getBytes());
1 packageorg.kodejava.example.io;2 3 importjava.io.ByteArrayInputStream;4 importjava.io.InputStream;5 6 publicclassStringToStream {7 publicstaticvoidmain(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 be13 * done by calling the getBytes() method.14 */15 try{16 InputStream is=newByteArrayInputStream(text.getBytes("UTF-8"));17 }catch(UnsupportedEncodingException e) {18 e.printStackTrace();19 }20 }21 }22
1、字符串轉inputStream
Java代碼??
String?string;
//......
InputStream?is?=?newByteArrayInputStream(string.getBytes());
2、InputStream轉字符串
Java代碼??
ByteArrayOutputStream?baos?=newByteArrayOutputStream();
inti;
while((i?=?is.read())?!=?-1)?{
baos.write(i);
}
String?str?=?baos.toString();
System.out.println(str);
3、String寫入OutputStream
Java代碼??
OutputStream?os?=?System.out;
os.write(string.getBytes());
4、OutputStream寫入String
這聽起來有點荒謬,OutputStream本來就是輸出源,還寫入String?
不過最近項目里確實遇到了個類似的問題,比如 SOAPMessage.writeTo(OutputStream os) 這個方法,是將SOAPMessage的內容寫到一個輸出流中,而我想得到這個流的內容,總不能把他先寫進文件再去讀這個文件吧,研究了好半天,終于想起可以如下這般:
Java代碼??
ByteArrayOutputStream?baos?=newByteArrayOutputStream();
//向OutPutStream中寫入,如?message.writeTo(baos);
String?str?=?baos.toString();
這里需要用到一個特殊的類ByteArrayOutputStream,利用他,我們可以將輸出流在內存中直接轉換成String類型。
具體代碼如下:
首先從輸入流中將數據讀出來寫入ByteArrayOutputStream,然后再將其轉換成String.
Java代碼??
InputStream?in?=?urlconn.getInputStream();//獲取輸入流
ByteArrayOutputStream?bos?=?newByteArrayOutputStream();
//讀取緩存
byte[]?buffer?=newbyte[2048];
intlength?=0;
while((length?=?in.read(buffer))?!=?-1)?{
bos.write(buffer,?0,?length);//寫入輸出流
}
in.close();//讀取完畢,關閉輸入流
//?根據輸出流創建字符串對象
newString(bos.toByteArray(),"UTF-8");
//or
//bos.toString("UTF-8");
根據同樣的原理,我們可以將outputstream直接轉換成String對象。
指定一下字符集
byte[] b = str.getBytes("utf-8");
String s = new String(b,"utf-8");
OUTPUTSTREAM中方法WRITE用法
void write(byte[] b)
將 b.length 個字節從指定的 byte 數組寫入此輸出流。
void write(byte[] b, int off, int len)
將指定 byte 數組中從偏移量 off 開始的 len 個字節寫入此輸出流。
abstract void write(int b)
將指定的字節寫入此輸出流。
總結
以上是生活随笔為你收集整理的java string 转 inputstream_String和inputstream互转【转文】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python数据处理常用函数_Pytho
- 下一篇: 初学Java学员,千万不要踩这几个坑