inputstream.png
//用ByteArrayOutputStream暫時緩存來自其他渠道的數據ByteArrayOutputStream data = new ByteArrayOutputStream(1024); //1024位元組大小的緩存區data.write(System.in.read()); // 暫存用戶輸入數據//將data轉為ByteArrayInputStreamByteArrayInputStream in = new ByteArrayInputStream(data.toByteArray());
//java對象的寫入FileOutputStream fileStream = new FileOutputStream(&34;);ObjectOutputStream out = new ObjectOutputStream(fileStream);Example example = new Example();out.writeObject(example);//java對象的讀取FileInputStream fileStream = new FileInputStream(&34;);ObjectInputStream in = new ObjectInputStream(fileStream);Example = (Example) in.readObject();
// 創建一個發送者對象Sender sender = new Sender(); // 創建一個接收者對象Receiver receiver = new Receiver(); // 獲取輸出管道流// 獲取輸入輸出管道流PipedOutputStream outputStream = sender.getOutputStream(); PipedInputStream inputStream = receiver.getInputStream();// 連結兩個管道,這一步很重要,把輸入流和輸出流聯通起來 outputStream.connect(inputStream);sender.start();// 啟動發送者線程receiver.start();// 啟動接收者線程
InputStream in1 = new FileInputStream(&34;);InputStream in2 = new FileInputStream(&34;);SequenceInputStream sequenceInputStream = new SequenceInputStream(in1, in2);//數據讀取int data = sequenceInputStream.read();
ByteArrayOutputStream out = new ByteArrayOutputStream(2014);//數據寫入,使用DataOutputStream裝飾一個InputStream//使用InputStream具有對基本數據的處理能力DataOutputStream dataOut = new DataOutputStream(out);dataOut.writeDouble(1.0);//數據讀取ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());DataInputStream dataIn = new DataInputStream(in);Double data = dataIn.readDouble();
21.png
//InputStream轉為ReaderInputStream inputStream = new ByteArrayInputStream(&34;.getBytes());InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);//OutputStream轉為WriterOutputStream out = new FileOutputStream(&34;);OutputStreamWriter writer = new OutputStreamWriter(out);//以字符為單位讀寫writer.write(reader.read(new char[2]));
ByteArrayInputStream in = new ByteArrayInputStream(&34;.getBytes());byte[] buf = new byte[2]; //讀取流的兩個字節in.read(buf); //讀取數據System.out.println(new String(buf)); //亂碼---result---- � //亂碼
InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
範圍 Unicode(Binary) UTF-8編碼(Binary) UTF-8編碼byte長度 U+0000~U+007F 00000000 00000000 00000000 0XXXXXXX 0XXXXXX 1 U+0080~U+07FF 00000000 00000000 00000YYY YYXXXXXX 110YYYYY 10XXXXXX 2 U+0800~U+FFFF 00000000 00000000 ZZZZYYYY YYXXXXXX 1110ZZZZ 10YYYYYY 10XXXXXX 3 U+010000~U+10FFFF 00000000 000AAAZZ ZZZZYYYY YYXXXXXX 11110AAA 10ZZZZZZ 10YYYYYY 10XXXXXX 4
System.out.println(Charset.defaultCharset()); //輸出java默認編碼for (byte item : &34;.getBytes(StandardCharsets.UTF_16)) { System.out.print(&34; + item + &34;);}System.out.println(&34;);for (byte item : &34;.getBytes(StandardCharsets.UTF_8)) { System.out.print(&34; + item + &34;);}----result----UTF-8 //java默認編碼UTF-8[-2][-1][122][11][94][-113] //UTF_16:6個字節?[-25][-88][-117][-27][-70][-113] //UTF_8:6個字節 正常
for (byte item : &34;.getBytes(StandardCharsets.UTF_16)) { System.out.print(&34; + item + &34;);}---result--[-2][-1][122][11]
public class YSOAPConnection implements AutoCloseable { private SOAPConnection connection; public static YSOAPConnection open(SOAPConnectionFactory soapConnectionFactory) throws SOAPException { YSOAPConnection ySoapConnection = new YSOAPConnection(); SOAPConnection connection = soapConnectionFactory.createConnection(); ySoapConnection.setConnection(connection); return ySoapConnection; } public SOAPMessage call(SOAPMessage request, Object to) throws SOAPException { return connection.call(request, to); } @Override public void close() throws SOAPException { if (connection != null) { connection.close(); } }}
//自動關閉的資源類使用示例try (YSOAPConnection soapConnection=YSOAPConnection.open(soapConnectionFactory)){ SOAPMessage soapResponse = soapConnection.call(request, endpoint); ...//數據操作} catch (Exception e) { log.error(e.getMessage(), e); ...}
import lombok.Cleanup;@Cleanup // @Cleanup的使用YSOAPConnection soapConnection=YSOAPConnection.open(soapConnectionFactory)
//FileInputStream.java - JDK8//jdk8的FileInputStream重寫了finalize,保證對象回收前開啟的資源被關閉protected void finalize () throws IOException { if (guard != null) { guard.warnIfOpen(); } if ((fd != null) && (fd != FileDescriptor.in)) { close(); }}
作者:clswcl
連結:https://juejin.im/post/6856266775022174222
來源:掘金