第十九天 笔记

第十九天 笔记


1. IO流的概述
  操作机器中的文件,硬盘,移动设备上,还联网的主机


  将操作设备上的文件的这种技术,称为流技术


  读和写,IO流  I=Input  O=Output


  问?IO流能不能操作文件夹,NO!


  IO技术,操作本机上的数据,还可以操作远程计算机上的数据


  A-B聊天,网络畅通,数据传输用的就是IO技术


  上网,IE 火狐(Firefox),浏览网页,通过IO技术传输的


  IO中的方法很少,但是类很多


2. IO流中的分类
  操作文件的,根据操作文件的不同,进行分类
  在计算机中有一种特殊的文件,文本文件


  问?什么是文本文件:记事本可正常打开的  txt  java  html
      word是吗 NO!


  Java中出现了专门操作文本文件的流对象
  字符流--操作文本文件的时候,自动的去查机器上的编码表(GBK)


  非文本文件类型,不能使用字符流
  java中有一种流对象,专门处理非文本类型文件


  字节是计算机中最小的存储单位,一个字节是多少个二进制位,8个


  字节流--处理任意的文件


  先有字节,后有字符
  
  IO中的字节字符体系的分类


   字符流:
      字符输出流(写文件)
        字符输出流的抽象基类  -- java.io.Writer
                          写的方法


      字符输入流(读文件)
        字符输入流的抽象基类  -- java.io.Reader
                          读的方法


  字节流:
     字节输出流(写文件)
       字节输出流的抽象基类   -- java.io.OutputStream


     字节输入流(读文件)
       字节输入流的抽象基类   -- java.io.InputStream


   
   按照操作文件不同,分成字节流和字符流
   按照流向不同,分成输出流,输入流


3. 字符输出流--java.io.Writer
  查阅API文档找到了他的子类  FileWriter
  构造方法  FileWriter(String fileName) 传递字符串的路径和文件名


  调用写的方法,是他父类的方法   void wr ite(String str) 抛出IO异常
  write方法,写数据的时候,并没有直接写入到目的文件,写在了流对象的缓冲区中
  缓冲区在内存中,简单的说,写进了内存,没有写到硬盘


  字符流写数据,必须要刷新内存中的数据缓冲,存储到硬盘
  flush() 刷新该流的缓冲。
 
  最后的步骤需要完成,必须要完成,既然创建文件,和写文件都是利用操作系统中的功能完成
  使用完毕IO流之后,释放调用占用操作系统的资源 (关流)


  close()方法,关闭资源,关闭之前,刷新一次
  
  文件,续写,接着往后写


  写字符数组


  写字符串,可以写单个字符,字符数组,英文,中文


4. 字符流读取文件 -- Java.io.Reader
    查阅API文档找到了他的子类  FileWriterReader
     构造方法 FileReader(String fileName) 传递字符串的路径和文件名


    读取单个字符  int read() 返回值,返回的是int值,读取到的字符的ASCII码
    read方法,不但可以读取单个字符,而且还能自动的继续向后读


    read方法,如果读取到了文件的末尾,返回-1


    int read(char[] cbuf) 传递一个字符数组,简称读取数组


    数组中,存储的是:读取到的字符
    返回值int 表示什么意思:表示存储到数组中的有效的字符个数


5. 文本文件复制案例
     复制文件就是在读取和写入


     先读取源文件 FileReader
     
     写到目的文件 FileWriter


     第一种复制文件的方式,读一个字符,写一个字符


     第二种复制文件的方式,读一个数组,写一个数组××××
     案例,明显看出了效率上的明显差别,20倍
     推荐,使用数组的方式,提升运行效率


     数组起到的作用,缓冲作用 buf


     通过案例,发现用数组缓冲,效率很高。我们想到了缓冲提升效率
     Oracle工程师们,也想到了提高效率
     io包中有两个对象,可以提高输出,输入流的效率
     BufferedReader
     BufferedWriter


 6. 字符流的缓冲区对象 
BufferedWriter字符输出流的缓冲区对象
构造方法 BufferedWriter(Writer out) 
Writer out 传递一个字符输出流,Witer类的子类对象
缓冲区,就会对我们传递的字符流对象进行高效操作
 void newLine() 写入换行
但是我们用 \r\n同样可以实现换行


newLine()方法,推荐使用,进行换行
为什么:原因是:方法具有跨平台性
       如果我们安装的JVM是Windows版本:newLine()方法中写的是 \r\n
       如果我们安装的JVM是Linux版本:newLine()方法中写的是 \n




       BufferedReader字符输入流的缓冲区对象
        BufferedReader(Reader in) 
Reader in 传递一个字符输入流。 Reader类的子类对象
缓冲区,就会对我们传递的字符流对象进行高效操作
读取一行的方法  String readLine() 文件的末尾,返回的是null
返回值,只有一行有效字符,没有换行符




7. 复制文本文件,用缓冲区
    读一行,写一行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值