1. 程式人生 > 實用技巧 >113.Java操作資料的流物件

113.Java操作資料的流物件

運算元組的流物件

操作位元組陣列

ByteArrayInputStream

以及ByteArrayOutputStream

toByteArray();

toString();

writeTo(OutputStream);

public static void testByteArrayInputStream() throws Exception {
        InputStream in = new ByteArrayInputStream(new byte[] { 65, 66, 67 });
        ByteArrayOutputStream out = new ByteArrayOutputStream();

        
for (int b = -1; (b = in.read()) != -1;) { out.write(b); } in.close(); out.close(); System.out.println(Arrays.toString(out.toByteArray())); System.out.println(out); }

操作字元陣列

CharArrayReader

CharArrayWriter

對於這些流,源是記憶體。目的也是記憶體。

而且這些流並未呼叫系統資源。使用的就是記憶體中的陣列。

所以這些在使用的時候不需要close。

運算元組的讀取流在構造時,必須要明確一個數據源。所以要傳入相對應的陣列。

對於運算元組的寫入流,在建構函式可以使用空引數。因為它內建了一個可變長度陣列作為緩衝區。

public static void testCharArrayReader() throws Exception {
        CharArrayReader reader = new CharArrayReader(new char[] { 'A', 'b', 'c' });
        CharArrayWriter writer = new CharArrayWriter();

        
for (int b = -1; (b = reader.read()) != -1;) { writer.write(b); } reader.close(); writer.close(); System.out.println(writer.toCharArray()); }

這幾個流的出現其實就是通過流的讀寫思想在運算元組。

類似的物件同理:

StringReader

StringWriter。

public static void testStringReader() throws Exception {
        StringReader reader = new StringReader("test 中國");
        StringWriter writer = new StringWriter();

        for (int b = -1; (b = reader.read()) != -1;) {
            writer.write(b);
        }

        reader.close();
        writer.close();

        System.out.println(writer.toString());
    }