• IO流


    一、IO流(掌握)
    (1)分类:
    A:流向
    输入流 读取数据
    输出流 写出数据
    B:数据类型
    字节流
    字节输入流
    字节输出流
    字符流
    字符输入流
    字符输出流
    1.字节流

    (1)FileOutputStream写出数据
    A:操作步骤
    a:创建字节输出流对象
    b:调用write()方法
    c:释放资源

    B:代码体现:
    FileOutputStream fos = new FileOutputStream("fos.txt");

    fos.write("hello".getBytes());

    fos.close();


    (2)FileInputStream读取数据
    A:操作步骤
    a:创建字节输入流对象
    b:调用read()方法
    c:释放资源

    B:代码体现:
    FileInputStream fis = new FileInputStream("fos.txt");

    //方式1
    int by = 0;
    while((by=fis.read())!=-1) {
    System.out.print((char)by);
    }

    //方式2
    byte[] bys = new byte[1024];
    int len = 0;
    while((len=fis.read(bys))!=-1) {
    System.out.print(new String(bys,0,len));
    }

    fis.close();


    2.字符流


    (1)FileWriter写出数据
    A:操作步骤
    a:创建字节输出流对象
    b:调用write()方法
    c:释放资源

    B:代码体现:
    FileWriter fw = new FileWriter("fos.txt");

    fw.write("hello".getBytes());

    fw.close();


    (2)FileReader读取数据
    A:操作步骤
    a:创建字节输入流对象
    b:调用read()方法
    c:释放资源

    B:代码体现:
    FileReader fr = new FileReader("fos.txt");

    //方式1
    int by = 0;
    while((by=fr.read())!=-1) {
    System.out.print((char)by);
    }

    //方式2
    byte[] bys = new byte[1024];
    int len = 0;
    while((len=fr.read(bys))!=-1) {
    System.out.print(new String(bys,0,len));
    }

    fr.close();

    4.处理流
    处理流封装的是其它流对象
    处理流提供了缓冲功能,提高读写效率。

    处理流中常用类
    -缓冲字节输出流 BufferedOutputStream
    -缓冲字节输入流 BufferedInputStream
    -缓冲字符输入流 BufferedReader
    -缓冲字符输出流 BufferedWriter

    5.转换流
    字符流与字节流的转换
    读入字节,并根据指定的编码方式,将之转换为字符流
    InputStreamReader(InputStream in)
    OutputStreamWriter(OutputStream out)

    6:IO流小结(掌握)
    IO流
    |--字节流
    |--字节输入流
    InputStream
    int read():一次读取一个字节
    int read(byte[] bys):一次读取一个字节数组

    |--FileInputStream
    |--BufferedInputStream
    |--字节输出流
    OutputStream
    void write(int by):一次写一个字节
    void write(byte[] bys,int index,int len):一次写一个字节数组的一部分

    |--FileOutputStream
    |--BufferedOutputStream
    |--字符流
    |--字符输入流
    Reader
    int read():一次读取一个字符
    int read(char[] chs):一次读取一个字符数组

    |--InputStreamReader
    |--FileReader
    |--BufferedReader
    String readLine():一次读取一个字符串
    |--字符输出流
    Writer
    void write(int ch):一次写一个字符
    void write(char[] chs,int index,int len):一次写一个字符数组的一部分

    |--OutputStreamWriter
    |--FileWriter
    |--BufferedWriter
    void newLine():写一个换行符

    void write(String line):一次写一个字符串

    7:序列化流(理解)
    (1)可以把对象写入文本文件或者在网络中传输
    (2)如何实现序列化呢?
    让被序列化的对象所属类实现序列化接口。
    该接口是一个标记接口。没有功能需要实现。

    (3)面试题:
    什么时候序列化?
    如何实现序列化?
    什么是反序列化?

    8:Properties(理解)
    (1)是一个集合类,Hashtable的子类
    (2)特有功能
    A:public Object setProperty(String key,String value)
    B:public String getProperty(String key)
    C:public Set<String> stringPropertyNames()
    (3)和IO流结合的方法
    把键值对形式的文本文件内容加载到集合中
    public void load(Reader reader)
    public void load(InputStream inStream)

    二、序列化
    (1)概念: Java序列化:是指把Java对象转换为二进制的数据流
    Java反序列化:是指把字节序列恢复为Java对象的过程。
    (2)应用:
    一是可以实现数据的持久化,在MVC模式中很是有用;
    二是可以对象数据的远程通信。

    (3)好处: 好处一是实现了数据的持久化,通过序列化可以把数据永久地保存到硬盘上(通常存放在文件里),
    二是,利用序列化实现远程通信,即在网络上传送对象的字节序列。

    (4)实现:被序列化的类需要实现 Serializable 接口,使用 ObjectInputStream 和 ObjectOutputStream 进行对象的读写。

    三、反射
    (1)概念:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
    对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
    (2)返回Class类实例的常用方法:
    //1.对象.getClass()
    Student student = new Student();
    Class c1 = student.getClass();

    //2.类名.class
    Class c2 = Student.class;

    //3.Class.forName
    Class c3 = Class.forName("com.chinasofti.day16.reflect.Student");

  • 相关阅读:
    python学习第三课
    Linux基本操作知识一
    Linux是什么
    Django 多对多 关系
    Django 解决跨域
    支付宝支付
    django中间件
    DRF一对多序列化和反序列化
    python代码实现购物车(django的redis与vue)
    Spring 依赖注入两种方式
  • 原文地址:https://www.cnblogs.com/hdj1073678089/p/7406088.html
Copyright © 2020-2023  润新知