Java_基础—内存输出流

来源:互联网 发布:《企业的大数据战略》 编辑:程序博客网 时间:2024/05/18 01:05
package com.soar.otherio;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class Demo2_ByteArrayOutputStream {    /*****1.什么是内存输出流    * 该输出流可以向内存中写数据, 把内存当作一个缓冲区, 写出之后可以一次性获取出所有数据****2.使用方式    * 创建对象: new ByteArrayOutputStream()    * 写出数据: write(int), write(byte[])    * 获取数据: toByteArray()     *      * ByteArrayOutputStream()     * 内存输出流     *      * FileInputStream读取中文的时候出现了乱码     * 解决方案:     * ① 字符流读取     * ② ByteOutPutStream     */    public static void main(String[] args) throws IOException {        //demo1();        FileInputStream fis = new FileInputStream("e.txt");        ByteArrayOutputStream baos = new ByteArrayOutputStream();   //在内存中创建了可以增长的内存数组        int b;        while((b = fis.read()) != -1){            baos.write(b);              //将读取到的数据逐个写到内存中        }        //byte[] arr = baos.toByteArray();      //将缓冲区的数据全部获取出来,并赋值给arr数组        //System.out.println(new String(arr));        System.out.println(baos.toString());    //将缓冲区的内容转换为了字符串,在输出语句中可以省略调用toStrin()方法        fis.close();    }    private static void demo1() throws FileNotFoundException, IOException {        FileInputStream fis = new FileInputStream("e.txt");        byte[] arr = new byte[3];        int len;        while((len = fis.read(arr)) != -1){            System.out.println(new String(arr, 0, len));        }    }}

面试题

package com.sora.test;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.IOException;public class Test8 {    /*     * 定义一个文件输入流,调用read(byte[] b)方法,     * 将a.txt文件中的内容打印出来(byte数组大小限制为5)     *      * 分析:     * ① read(byte[] b)是字节输入流的方法,创建FileInputStream,关联a.txt     * ② 创建内存输出流,将读到的数据写到内存输出流中     * ③ 创建字节数组,长度为5     * ④ 将内存输出流的数据,全部转换为字符串打印     * ⑤ 关闭输入流     */    public static void main(String[] args) throws IOException {        //① read(byte[] b)是字节输入流的方法,创建FileInputStream,关联a.txt        FileInputStream fis = new FileInputStream("a.txt");        //② 创建内存输出流,将读到的数据写到内存输出流中        ByteArrayOutputStream baos = new ByteArrayOutputStream();        //③ 创建字节数组,长度为5        byte[] arr = new byte[5];        int len;        while((len = fis.read(arr)) != -1){            baos.write(arr, 0, len);        }        //④ 将内存输出流的数据,全部转换为字符串打印        System.out.println(baos);       //即使没有调用,底层也会默认帮我们调用toString()方法        //⑤ 关闭输入流        fis.close();    }}
原创粉丝点击