黑马程序员_IO

来源:互联网 发布:图片数据经济 编辑:程序博客网 时间:2024/05/18 03:43

------- android培训、java培训、期待与您交流! ----------

 

IO
  开发步骤
    一,明确操作的对象
      字符流
        Read
          FileReader fr = new FileReader("XXX.txt")
            读文件对象,文件要存在 否则会报找不到文件异常
        Writer
          FileWriter fw = new FileWriter("XXX.txt")
            声明要写人的文件地址,如果文件不存在会创建文件
      字节流
        InputStream
          FileInputStream fis = new FileInputStream("需要读取的文件的地址")
            创建一个字节流文件对象和文件相关联
            文件不存在也会报异常
          Input|Stream in = System.in;
            创建一个字节流对象和键盘录入相关联
        OutputStresm
    二,调用操作流的方法
      字符流
        read
          fr.read()一次读取一个数据
            为了高效点
      字节流
        read
          fis.read()
    三,为了高效点引入数组进行缓存
      字符流
        read
          定义一个char【】,让读取到的字符先存人数组,数组长度通常用1024
          然后在定义一个变量来记住读取到数组中的字符数int len
          然后用fr.read(char【】,0,len)就能一次读取到很多元素,从而减少了读的时间
          当读到文件最后时会返回-1,这样就可以用循环来读取
        write
          也可以用读的方法定义一个数组,然后调用write(char,0,len)
          这样就可以将数组的元素写入流对象
          再调用flush将数组写入指定的文件
      字节流
        read
          与字符流相同
        write
          与字符流相同
    四,为了高效的读取,就是加强了读写(称为该类的装饰类)
      字符流
        BufferReader
          BufferReader br = newBufferReader(new FileReader(“luolei。txt”)(BufferReader只是为filereader提高效率而存在))
          所以在调用时要传入所需要提高的流对象
          在操作时通常要定义一个String类型的变量(如:line)来记住该行的数据,当读到最后会返回null
          BufferReader有个高效的读取方法readline();该方法能够一次读取一行但不会返回换行符
          所以在写的时候要记得调用BufferWriter的newline方法
        BufferWriter
          同样也只是提高写的效率而存在的,所以与BufferReader类似,
          写通常会用到br读到的数据,所以通常会 bw。writer(line);bw.newline();bw.flush()
      字节流
        BufferInputStream
          该对象只是将高效的 read进行封装
          它并没有readline()
            如果操作的是文件对象,可以用转换流的方法将字节流转为字符流
            InputStreamReader isr =  new InputStreamReader(“传入所需要转换的字节流对象”)
            得到的isr就是字符流对象
            为了提高效率,能用到readline方法
            BufferReader br = new BufferReader(isr);将该转换后的字符流装饰一下
            然后用一个String变量记住每次读取的行数据,就可以用readline方法高效处理
        BufferOutputStream
          它只是将OutpuStream进行装饰
          它没有newline方法
            如果要操作的是字符流,而输出的是字节流,那么就要将字节流转为字符流
            OutpuStreamWriter osw = new OutpuStreamWriter(“传入一个要输出的字节流对象”)
            然而此时的osw还是字符流,所以可以用BufferWriter装饰
            然后osw.writer("传入所需要转换的字符流对象")
            然后可以用BUfferWriter的newline方法
            这样就可以达到将一个字符流以字节流的形式输出
    规律:
      一,明确源对象
        源对象:
          InputStream
          Reader
        目的:
          OutpuStream
          Writer
      二,操作的对象是不是纯文本
        是
          字节流
        不是
          字节流
      三,体系明确后再确定用那个对象
        通过设备来区分
          源设备
            内存
            硬盘
            键盘
          目的
            内存
            硬盘
            控制台

 

 

 

 

 ------- android培训、java培训、期待与您交流! ----------

原创粉丝点击