IO流(字符流,字节流)

1、IO流

        IO:输入/输出(input/output)

        流:抽象的概念,数据传输的总称

        IO流:用来处理设备之间数据传输问题

        input:读数据(硬盘->Java内存)

        output:写数据(Java内存->硬盘)

2、IO流分类

       1) 流向分类:输入输出

        2)功能分类:节点流/处理流

                (带Buffered的都是处理流)

        3)数据类型:字节/字符

        使用:记事本打开内存看得懂就字符,看不懂就字节,不知道使用什么流直接字节

                   (字节流是万能流)

3、IO使用步骤

        1.创建对象

                (1.调用系统创建空文件  2.创建字节输出流对象  3.让对象指向文件)

        2.关闭资源(多个流可能同时打开一个文件,可能会出现问题)

        3.调用方法

FileOutputStream fos = new FileOutputStream("路径");

fos.write();        /        fis.read();

fos.close();        /        fis.close();

写数据:FileOutputStream

        OutputStream:是所有字节输出流的抽象父类

        构造:

                覆盖:FileOutputStream(String name)

                           //创建文件输出流以指定的名称写入文件

                           FileOutputStream(new File)

                           //创建文件输出流以写入由指定的 File对象表示的文件

                追加:FileOutputStream(String name,boolean append)

                           //创建文件输出流以指定的名称写入文件

                           FileOutputStream(new File,boolean append)

                           //创建文件输出流以写入由指定的 File对象表示的文件

写入方法:write(int b)        将指定字节写入文件,一次写一个字节

                  write(byte[] b)         将指定的字节数组写入文件,一次写一个字节数组

                  write(byte[] b,int off,int len)         

                  将指定的字节数组,从偏移量off开始写入文件,一次写len个字节,一次写数组的一部分

 换行符:不同的操作系统中有不同的换行符      

        windous: \r\n

        linux: \n

        mac: \r

        常用: \n

读数据:FileInputStream

        InputStream:所有字节输入流的抽象父类

构造:FileInputStream(String name)

           创建文件输入流以指定的名称读取文件数据

注意:不能创建文件只能做查找

读取数据方法:read():一次读取一个字节,返回值为十进制

                          read(byte[] b):一次读取一个字节数组,返回值为读取数据的个数

                          read(byte[] b,int off,int len) :

                                使用当前数组的一部分读取数据,返回值为读取数据个数

注意: read(byte[] b,int off,int len)不循环读取数据

循环读取数据的写法:

        int i;

        while((i=fis.read(数据))!=-1) {

                System.out println(输出数据);

     }

 System.out println(Arrays.toString(b));       

         //[0.0.97.98.0]        返回指定数组内容以字符串形式表示

 System.out println(new String(b,off:2,len:2));     

          //fgh        字节数组byte转字符串string

   

注意:一次read获取一次数据,所以每次循环只能获取一次数据


版权声明:本文为weixin_44778537原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。