java I/O———內存操作流

內存流概念

在之前所有的操作都是針對於文件進行的IO處理。除了文件之外,IO的操作也可以發生在內存之中,這種流稱之爲內存操作流。文件流的操作裏面一定會產生一個文件數據(不管最後這個文件數據是否被保留)。

如果現在需求是:需要進行IO處理,但是又不希望產生文件。這種情況下就可以使用內存作爲操作終端。

對於內存流也分爲兩類:

  1. 字節內存流:ByteArrayInputStream、ByteArrayOutputStream
  2. 字符內存流:CharArrayReader、CharArrayWriter

首先來觀察ByteArrayInputStream和ByteArrayOutputStream的構造方法:

public ByteArrayInputStream(byte buf[])
public ByteArrayOutputStream()

接下來看內存流的繼承關係:

在這裏插入圖片描述
在這裏插入圖片描述

範例:通過內存流實現大小寫轉換。

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class TestDemo {
    public static void main(String[] args) throws IOException {
        String msg = "hello world";
        // 實例化InputStream類對象,實例化的時候需要將你操作的數據保存到內存之中
        // 最終讀取的就是你設置的內容。
        InputStream input = new ByteArrayInputStream(msg.getBytes()) ;
        OutputStream output = new ByteArrayOutputStream() ;
        int temp = 0 ;
        while((temp = input.read()) != -1) {
            // 每個字節進處理,處理之後所有數據都在outputStream類中
            output.write(Character.toUpperCase(temp)) ;
        }
        // 直接輸出output對象
        System.out.println(output) ;
        input.close() ;
        output.close() ;
    }
}

這個時候發生了IO操作,但是沒有文件產生,可以理解爲一個臨時文件處理。

最初Ajax剛形成的時候此類操作非常多。後來出現了許多新的工具,這類代碼出現的機率就比較低了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章