InputStream的作用是用來表示那些從不同資料來源產生輸入的類。OutputStream決定了輸出所要去往的目標
資料來源 對應的類(都繼承自InputStream)
(1)位元組數組 ByteArrayInputStream [ByteArrayOutputStream]
(2)String對象 StringBufferInputStream(已棄用)
(3)檔案 FileInputStream [FileOutputStream]
(4)“管道” PipedInputStream [PipedOutputStream]
(5)由其它種類的流組成的序列 SequenceInputStream
(6)其他資料來源,如Internet
樣本:
package test;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.util.Arrays;/* * ByteArrayInputStream(ByteArrayOutputStream)表示從位元組數組產生輸入(輸出) * 這個類其實就是對一個位元組數組進行操作,把這個位元組數組看成一個緩衝區 * 關閉方法是一個空方法,關閉後不影響其他方法 * 可以將數組定位到指定位置開始讀/寫,可以將數組從頭開始讀/寫,可以查看數組還有幾個位元組可用 * 可以在某個位置做標記,可以返回到標記位置進行讀/寫 */public class ByteArrayInputStreamDemo {public static void main(String[] args) {// 輸入資料流緩衝區(假設已經有若干位元組)byte[] inputBuff = new byte[] { 1, 2, 3, 'a', 'b', 'c', 'd', 'e', 'f' };byte[] result = new byte[20];ByteArrayInputStream inputStream = new ByteArrayInputStream(inputBuff);// 將緩衝區的位元組讀入result數組並輸出resultinputStream.read(result, 0, 20);System.out.println(Arrays.toString(result));// 將result數組寫入輸出資料流ByteArrayOutputStream outStream = new ByteArrayOutputStream();outStream.write(result, 0, 20);System.out.println(Arrays.toString(outStream.toByteArray()));}}
package test;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/* * FileInputStream從檔案中產生輸入資料流,FileOutputStream * 把輸出資料流輸出到檔案。讀/寫、開啟和關閉都是調用本地方法 */public class FileInputStreamDemo {public static void main(String[] args) throws IOException {FileInputStream inputStream = null;try {inputStream = new FileInputStream(new File("file/bb.dat"));} catch (FileNotFoundException e) {e.printStackTrace();}// 讀到一個位元組數組byte[] result = new byte[500];// int b;// while ((b = inputStream.read()) != -1)//讀一個位元組// System.out.print((char) b);inputStream.read(result);// System.out.println(Arrays.toString(result));inputStream.close();FileOutputStream outputStream = null;// true表示以追加的形式開啟outputStream = new FileOutputStream("file/bb.dat", true);// 寫入outputStream.write((int) 'A');outputStream.write(result);outputStream.close();}}