16.12I/O编程概要

  1. 在java中使用File类表示文件本身,可以直接使用此类完成文件的各种操作,如创建、删除等。在开发中可以利用递归的形式进行子目录列出的操作。
  2. 输入流,输出流。主要分为字节流(OutputSteam,InputStream)和字符流(Write、Reader)两种,但是在传输中以字节流操作较多,字符流在操作的时候要用到缓冲区,而字节流没有使用缓冲区。字符流适用于中文传输操作。
  3. 字节流或者字符流都是以抽象类的形式定义,根据其使用的子类不同,输入或输出的位置也不同。例如,如果使用文件流实例化,则输入和输出的终端就是文件;如果使用内存流实例化,则输入和输出的终端就是内存,此类设计充分体现出了面向对象多态性的设计特点。
  4. 在I/O包中可以使用OutputStreamWrite和InputStreamReader完成字符流与字节流之间的转换操作,FileWrite是OutputStreamWrite的子类,而FileReader是InputStreamReader的子类。
  5. 使用ByteArrayInputStream和ByteArrayOutputStream可以对内存进行输入,输出操作。
  6. 当程序进行数据输出时,可以通过打印流(PrinrStream,PrintWrite)简化输出操作。
  7. 管道流可以实现两个线程之间的通信,通信前要使用connect()方法进行管道连接。
  8. RandomAccessFile提供了灵活的数据访问模式,可以快速实现大文件数据部分内容的读取。
  9. System类提供了3个支持I/O操作的常量
    System.out:对应着显示器的标准输出
    System.err:对应着错误信息打印,一般此信息不希望给用户看到
    System.in:对应着标准的键盘输入
  10. BufferedReader可以直接从缓冲区中读取数据,其提供的readLine()方法可以一次性读取缓冲区的全部内容。
  11. 使用Stream类可以方便地进行输入流操作,在读取时可以先使用hasNextXxx()方法判断是否有指定类型的数据,在使用nextXxx()方法获取数据内容。
  12. 造成字符乱码的根本原因就在于程序编码与本地编码的不统一,在开发中建议使用UTF-8编码。
  13. 对象序列化可以将内存中的对象转为二进制数据,但对象所在的类必须实现Serializable接口,一个类中的属性如果使用transient关键字声明,则此属性的内容将不会被序列化。
  14. 对象序列化需要通过ObjectOutputStream类完成,而在进行反序列化时,需要将序列化的二进制数据按照格式取出,这时可以使用ObjeectInputStream类读取。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章