ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaSE基础入门Day21

2020-06-12 21:52:18  阅读:200  来源: 互联网

标签:字符 入门 int 写入 Day21 JavaSE 序列化 public 字节


I/O 框架

流的概念

  • 概念:内存与存储设备之间传输数据的通道

  • 数据借助流传输

 

流的分类

  • 按方向【重点】:

    • 输入流:将 <存储设备> 中的内容读入到 <内存> 中。

    • 输出流:将 <内存> 中的内容写入到 <存储设备> 中。

 

  • 按单位:

    • 字节流:以字节为单位,可以读写所有数据。

    • 字符流:以字符为单位,只能读写文本数据。

 

  • 按功能:

    • 节点流:具有实际传输数据的读写功能。【底层流】

    • 过滤流:在节点流的基础之上增强功能。

 

字节流

  • 字节流的父类(抽象类):

    • InputStream:字节输入流

      • public int read(){}
        public int read(byte[] b){}
        public int read(byte[] b, int off, int len){}
    • OutputStream:字节输出流

      • public void write(int n){}
        public void write(byte[] b){}
        public void write(byte[] b, int off, int len){}

文件字节流

  • FileInputStream:

    • public int read(byte[] b) // 从流中读取多个字节,将读到内容存入b数组,返回实际读到的字节数;如果达到文件的尾部,则返回 -1。
  • FileOutputStream:

    • public void write(byte[] b) // 一次写入多个字节,将b数组中所有字节,写入输出流。

 

字节缓冲流

  • 缓冲流:BufferedInputStream/BufferedOutputStream

    • 提高 IO 效率,减少访问磁盘的次数;

    • 数据存储在缓冲区中,flush是将缓存区的内容写入文件中,也可以直接close。

 

对象流

  • 对象流:ObjectOutputStream/ObjectInputStream

    • 增强了缓冲区功能

    • 增强了读写8种基本数据类型和字符串功能

    • 增强了读写对象的功能:

      1. readObject()从流中读取一个对象,注意读了两个对象会造成: EOF 异常

      2. writeObject(Object obj)向流中写入一个对象,要求被写入的类要实现 Serializable 标记接口

  • 使用流传输对象的过程称为序列化:把内存中对象写入流中、反序列化:从流种读取对象。

 

  • 注意要求:

    • (1) 序列化类必须要实现 Serializable 标记接口

    • (2) 序列化类种对象属性要求实现 Serializable 标记接口【属性是一个类的时候】

    • (3) 序列化版本号ID,保证序列化的类和反序列化的类是同一个类

    • (4) 使用 transient(瞬间的,只在内存上临时存在) 关键字,修饰属性,该属性不能被序列化了

    • (5) 静态属性不能序列化

    • (6) 序列化多个对象,可以借助集合实现

 

编码方式

字符编码

  • ISO—8859—1: 收录除 ASCII 外,还包括西欧、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号

  • UTF—8:针对Unicode码表的可变长度字符编码,万国码

  • GB2312:简体中文

  • GBK:简体中文、扩充

  • BIG5:台湾、繁体中文

 

  • 当编码方式和解码方式不一致时,会出现乱码。

 

字符流

  • 字符流的父类(抽象类):

    • Reader:字符读取输入流

      • public int read(){}

        public int read(char[] c){}

        public int read(char[] b, int off, int len){}
    • Writer:字符写入输出流

      • public void write(int n){}

        public void write(String str){}

        public void write(char[] c){}

         

文件字符流

  • FileReader:

    • public int read(char[] c)
      // 从流中读取多个字符,将读到内容存入 c 数组,返回实际读到的字符数;如果达到文件的尾部,则返回 -1
  • FileWriter:

    • public void write(String str)
      // 一次写多个字符,将字符串中所有字符,写入输出流

 

字符缓冲流

  • 缓冲流:BufferedReader / BufferedWriter

    • 高效读写

    • 支持输入换行符

    • 可一次写一行、读一行

 

打印流

  • PrintWriter:

    • 封装了 print() / println() 方法,支持写入后换行

    • 支持数据原样打印

 

转换流

  • 桥转换流:InputStreamReader / OutputStreamWriter

    • 可将字节流转换为字符流。

    • 可设置字符的编码方式。

    • InputStreamReader :字节流通向字符流的桥梁,硬盘写内存

    • OutputStreamWriter:字符流通向字节流的桥梁,内存写硬盘

 

File类

  • 概念:代表物理盘符中的一个文件或者文件夹

  • 方法:

    • createNewFile() //创建一个新文件
      mkdir() //创建一个新目录
      delete() //删除文件或空目录
      exists() //判断File对象所代表的对象是否存在
      getAbsolutePath() //获取文件的绝对路径
      getName() //取得名字
      getParent() //获取文件,目录所在的父目录
      isDirectory()//是否是目录
      isFile()// 是否是文件
      length()//获取文件长度
      listFiles()//列出目录中的所有内容
      renameTo()//修改文件名为

 

FileFilter接口

  • public interface FileFilter
    • boolean accept(File pathname)
  • 当调用File类中的 listFiles() 方法时,支持传入FileFilter接口实现类,对获取文件进行过滤,只有满足条件的文件才可出现在 listFiles()的返回值中。

 

Properties

  • Properties:属性集合,继承 HashTable,线程安全的集合

  • 特点:

    1. 存储属性名和属性值,键值对

    2. 属性名和属性值都是字符串类型

    3. 没有泛型

    4. 和流有关

 

总结

  • 流的概念:

    • 内存与存储设备之间传输数据的通道。

  • 流的分类:

    • 输入流、输出流;字节流、字符流;节点流、过滤流;

  • 序列化、反序列化:

    • 将对象通过流写入到文件,或将对象通过流读取到内存,必须实现 Serializable 接口。

  • File对象:

    • 代表物理盘符中的一个文件或者文件夹。

    •  

标签:字符,入门,int,写入,Day21,JavaSE,序列化,public,字节
来源: https://www.cnblogs.com/77-is-here/p/13110613.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有