java I/O流详解

概念


java中一切都是面向对象的,在I/O流操作中,可分为数据对象和操作数据对象,对流操作的单元可分为字节流和字符流。
字节流:
1)操作对象是字节,字节是数据在计算机中存储的单元,是一个二进制数
2)是直接操纵文件
字符流:
1)操作对象是文本,字符是抽象符号定义
2)会将数据放入缓冲区,在操作流对象关闭的时候,从缓冲区中写出数据
输入流:
对数据操作,以流的形式存在,从流中读取数据
输出流:
对数据处理,写入到流中,写出到文件中


字节流


这里写图片描述


SequenceInputStream

        SequenceInputStream sequenceInputStream = null;

        Vector<FileInputStream> vector = new Vector<FileInputStream>();
        vector.addElement(new FileInputStream(new File("D://text1.txt")));
        vector.addElement(new FileInputStream(new File("D://text2.txt")));
        vector.addElement(new FileInputStream(new File("D://text3.txt")));
        vector.addElement(new FileInputStream(new File("D://text4.txt")));

        Enumeration<FileInputStream> e = vector.elements();

        sequenceInputStream = new SequenceInputStream(e);

        FileOutputStream outputStream1 = new FileOutputStream(new File("D://file2.txt"));


        //输出流 操作单元以数组形式
        //每次读一个字节,缓存到字节数组中,然后返回
        byte[] buffer1 = new byte[1024];
        int temp = 0 ;
        while((temp = sequenceInputStream.read(buffer1)) != -1){
            System.out.println((char)temp);
            //将字节数组buffer1偏移量0长度为temp的数据写出
            outputStream1.write(buffer1, 0, temp);
            //强制将缓冲区的数据输出到输出流
            outputStream1.flush();
        }

        sequenceInputStream.close();
        outputStream1.close();

ByteArrayInputStream

        String str = "welcome to shanghai";

        //输出到控制台
        PrintStream printStream = new PrintStream(System.out);

        ByteArrayInputStream  byteInputStream = new ByteArrayInputStream(str.getBytes());

        int index = 0;
        //从字节流中一个个字节读取并返回
        while((index = byteInputStream.read()) != -1){
            printStream.write(index);
        }

        printStream.close();
        byteInputStream.close();

Object(Input/Output)Stream ##


        //输出流 将数据写出到流中
        TestBean bean = new TestBean();
        bean.setName("shanghai");

        OutputStream outputStream = new FileOutputStream("object.data");

        ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);

        objectOutputStream.writeObject(bean);

        //输入流 从流中将数据读取
        InputStream inputStream = new FileInputStream("object.data");

        ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);

        TestBean testBean = (TestBean) objectInputStream.readObject();

        //输出到控制平台
        PrintStream print  = new PrintStream(System.out);

        print.print(testBean.getName());

        outputStream.close();
        objectOutputStream.close();
        inputStream.close();
        objectInputStream.close();
        print.close();

Data(Input/Output)Stream

        OutputStream  outputStream = new FileOutputStream("object.data");

        DataOutputStream dataOutputStream = new DataOutputStream(outputStream);

        TestBean bean = new TestBean();
        bean.setName("shanghai");

        dataOutputStream.writeUTF(bean.getName());;

        InputStream inputStream = new FileInputStream("object.data");

        DataInputStream dataInputStream = new DataInputStream(inputStream);

       String str = dataInputStream.readUTF();

       PrintStream print = new PrintStream(System.out);

       print.print(str);

       outputStream.close();
       dataOutputStream.close();
       inputStream.close();
       dataInputStream.close();
       print.close();

字符流


这里写图片描述


        FileReader reader = new FileReader(new File("D://text1.txt"));
        PrintWriter writer = new PrintWriter(System.out);

        int index = 0;

        char[] chars = new char[512];


        while((index = reader.read(chars)) != -1){
            writer.write(chars, 0, index);
        }

        reader.close();
        writer.close();
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值