java I/O流详解

来源:互联网 发布:linux 关闭ntpdate 编辑:程序博客网 时间:2024/05/29 03:55

概念


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();
0 0
原创粉丝点击