java 內存操作流


操作內存流的時候(從讀取出來,注意一定要把真正的數據toByteArray或者toCharArray將數據讀出來)

之前的文件操作流是以文件的輸入輸出為主的,當輸出的位置變成了內存,那么就稱為內存操作流。此時要使用內存流完成內存的輸入和輸出操作。

如果程序運行過程中要產生一些臨時文件,可采用虛擬文件方式實現;

直接操作磁盤的文件很耗性能,使用內存流可以提升性能;jdk里提供了內存流可實現類似於內存虛擬文件的功能。

ByteArrayInputStream:將內容寫到內存中     CharArrayReader

ByteArrayOutputStream:將內存中的數據寫出      CharArrayWriter

ByteArrayInputStream:構造方法:

public ByteArrayInputStream(byte[] buf):全部內容

public ByteArrayInputStream(byte[] buf,int offset,int length):指定范圍的內容

ByteArrayOutputStream:

public ByteArrayOutputStream()

 

 

我的總結:內存流操作:先把數據寫到內存中去,然后再從內存中讀取出來!提升了性能!

 

例子

//此處用的是內存字節流(寫入加輸出)

package june6D;

 

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

 

public class ByteArrayDemo7 {

    public static void main(String[] args) throws IOException {

        String s = "java is a good language";

        ByteArrayOutputStream bos = new ByteArrayOutputStream();//輸出流

        bos.write(s.getBytes());

        // 已經把信息寫到了內存中

 

        byte[] bys = bos.toByteArray();// 得到真正的數據

        ByteArrayInputStream bis = new ByteArrayInputStream(bys);//輸入流,需要源。

        byte[] b = new byte[1024];

        int len;

        while ((len = bis.read(b)) != -1) {

            String data = new String(b, 0, len);

            System.out.println(data);

        }

    }

}

 

 

package june6D;

 

import java.io.CharArrayReader;

import java.io.CharArrayWriter;

 

public class CharArrayDemo8 {

 

    public static void main(String[] args) throws Exception {

        // 用內存字符流先把數據保存到內存中,然后從內存中取出數據

        String s = "河南城建學院";

        CharArrayWriter cw = new CharArrayWriter();

        cw.write(s);// 數據寫到了內存中

        char[] ch = cw.toCharArray();

        CharArrayReader cr = new CharArrayReader(ch);

        char[] b = new char[1024];

        int len;

        while ((len = cr.read(b)) != -1) {

            String data = new String(b, 0, len);

            System.out.println(data);

        }

    }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM