zoukankan      html  css  js  c++  java
  • 2017年4月12号课堂笔记

    2017年4月12号 晴 空气质量:良

    内容:输入输出流和序列化

    一、java流的分类(图示)

    二、FileInputStream(字节流输入流)

    老师代码:

    package cn.bdqn.stream;

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;

    public class FileInputStream01 {

    /**
    * FileInputStream:是输入流!
    * 把文件中的内容 读取到 内存中!
    */
    public static void main(String[] args) {
    FileInputStream fis = null;
    try {
    // 创建一个输入流对象
    fis = new FileInputStream("e:/io.txt");
    // 获取课读取的字节数
    System.out.println(fis.available());
    int num = 0;
    while ((num = fis.read()) != -1) {
    System.out.println((char)num);
    }
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    try {
    fis.close(); // 关闭流
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    }
    }

    三、FileOutputStream(字节流输出流)

     老师代码:

    package cn.bdqn.stream;

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;

    public class FileOutputStream02 {

    /**
    * FileOutputStream:是输出流!
    * 把内存中的内容写入到 文件中!
    */
    public static void main(String[] args) {
    FileOutputStream fos = null;
    try {
    // 创建一个输出流对象
    // fos = new FileOutputStream("e:/io.txt");
    fos = new FileOutputStream("e:/io.txt", true);
    // 在内存中创建一个字符串
    String words = "7654321";
    fos.write(words.getBytes());
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    try {
    fos.close(); // 关闭流
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    }
    }

    四、FileReader(字符流输入流)

    老师代码:

    package cn.bdqn.stream;

    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;

    public class FileReader03 {
    /**
    * 字符流的基类是 Reader
    * Reader下面有一个InputStreamReader
    * InputStreamReader有一个FileReader
    */

    public static void main(String[] args) {
    // 查询当前类的编码格式
    System.out.println(System.getProperty("file.encoding"));

    FileReader fr = null;
    try {
    // 获取输入流对象 字符流对象
    fr = new FileReader("e:/io.txt");
    // 开始读取
    int num = 0;
    // 创建字符数组 数据的中转站
    char[] words = new char[1024];
    StringBuffer sb = new StringBuffer();
    // 字符串的拼接
    while ((num = fr.read(words)) != -1) {
    sb.append(words);
    }
    System.out.println(sb.toString());
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    try {
    fr.close();// 关闭流
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }

    }

    五、BufferedReader(有缓冲区的字符流输入流)

    老师代码:

    package cn.bdqn.stream;

    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.Reader;

    public class BufferedReader04 {
    /**
    * 字符流的基类是 Reader
    * Reader下面有一个BufferedReader
    * BufferedReader:底层有缓冲区!
    * 可以逐行读取!
    */
    public static void main(String[] args) {

    Reader reader = null;
    BufferedReader br = null;
    /**
    * 01.创建BufferedReader对象! 但是参数需要Reader对象
    * 因为Reader是抽象类,不能实例化,
    * 我们只能传递它的子类!
    */
    try {
    reader = new FileReader("e:/io.txt"); // 02.
    br = new BufferedReader(reader);
    // 把每一行读取的内容给String对象
    String s = null;
    while ((s = br.readLine()) != null) {
    System.out.println(s);
    }
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    // 先开的后关闭
    try {
    br.close();
    reader.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    }

    }

    六、FileWriter(字符流输出流)

    老师代码:

    package cn.bdqn.stream;

    import java.io.FileWriter;
    import java.io.IOException;

    public class FileWriter05 {

    /**
    * Writer有个子类叫 OutputStreamWriter
    * OutputStreamWriter 有个子类叫 FileWriter
    */

    public static void main(String[] args) {
    FileWriter fw = null;
    try {
    // 获取输出流对象 并指定了 输出的位置
    fw = new FileWriter("e:/io.txt", true);
    fw.write("大家zhen辛苦了!");
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    try {
    fw.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    }

    }

    七、BufferedWriter(有缓冲区的字符流输出流)

     老师代码:

    package cn.bdqn.stream;

    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.Writer;

    public class BufferedWriter06 {

    public static void main(String[] args) {

    /**
    * 01.创建BufferedWiter对象的时候,发现参数让传递 Writer对象
    * Writer 是抽象类 只能传递 其子类
    */
    Writer writer = null;
    BufferedWriter bw = null;
    try {
    writer = new FileWriter("e:/io.txt", true);// 02.
    bw = new BufferedWriter(writer);
    // 开始写入数据
    bw.write("稍等2分钟!");
    bw.write("稍等2分钟!");
    bw.newLine();// 换行
    bw.write("稍等2分钟!");
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    try {
    bw.close();
    writer.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    }
    }

    八、InputStreamReader(可以指定编码格式的字符输入流)

    老师代码:

    package cn.bdqn.stream;

    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;

    public class InputStreamReader07 {

    /**
    * FileInputStream:是输入流!
    * 把文件中的内容 读取到 内存中!
    */
    public static void main(String[] args) {
    FileInputStream fis = null;
    InputStreamReader isr = null;
    BufferedReader br = null;
    try {
    // 创建一个输入流对象 指定从哪个文件中读取数据
    fis = new FileInputStream("e:/io.txt");
    /**
    * 创建InputStreamReader的时候需要传递一个InputStream对象
    * InputStream是抽象类
    * FileInputStream就是其子类
    * 指定编码格式
    */
    isr = new InputStreamReader(fis, "utf-8");
    br = new BufferedReader(isr);
    String w = null;
    while ((w = br.readLine()) != null) {
    System.out.println(w);
    }
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    try {
    fis.close(); // 关闭流
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }

    九、DataInputOrOutputStream(二进制文件的读取与写入)

    老师代码:

    package cn.bdqn.stream;

    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;

    public class DataInputOrOutputStream08 {

    /**
    * 把e盘下面的cat.jpg 文件(图片)放入到
    * e:/java文件夹中 并且更改名称为 小猫咪.jpg
    * @throws Exception 你别抛出!
    */
    public static void main(String[] args) throws Exception {
    /**
    * 01.cat.jpg是不是文件?
    */
    FileInputStream fis = new FileInputStream("e:/cat.jpg");
    // 02.读取2进制文件 创建DataInputStream对象
    DataInputStream dis = new DataInputStream(fis);

    // 03.创建对应的输出流对象
    FileOutputStream fos = new FileOutputStream("e:/java/小猫咪.jpg");
    // 04.写入2进制文件 创建DataOutputStream对象
    DataOutputStream dos = new DataOutputStream(fos);

    int data = 0;
    while ((data = dis.read()) != -1) { // 读
    // 写
    dos.write(data);
    }

    dos.close();
    fos.close();
    dis.close();
    fis.close();

    }

    }

    十、序列化

    老师代码:

    1)实体类Student:

    package cn.bdqn.serializable;

    import java.io.Serializable;

    /**
    * 持久化:把我们内存中的内容存储到一个存储介质中的过程!
    *
    * 序列化:只是持久化技术中的一种实现方式!
    * 只能把内存中的对象保存到文件中!
    *
    * 反序列化:把文件中的对象放到内存中!
    *
    * Serializable:只是说当前类所创建的对象能否被序列化或者反序列化!
    */
    public class Student implements Serializable {

    private int id;
    private int age;
    private String name;
    private String sex;

    public int getId() {
    return id;
    }

    public void setId(int id) {
    this.id = id;
    }

    public int getAge() {
    return age;
    }

    public void setAge(int age) {
    this.age = age;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getSex() {
    return sex;
    }

    public void setSex(String sex) {
    this.sex = sex;
    }

    public Student() {
    super();
    }

    public Student(int id, int age, String name, String sex) {
    super();
    this.id = id;
    this.age = age;
    this.name = name;
    this.sex = sex;
    }

    @Override
    public String toString() {
    return "Student [id=" + id + ", age=" + age + ", name=" + name
    + ", sex=" + sex + "]";
    }

    }

    2)SerializableTest:

    package cn.bdqn.serializable;

    import java.io.FileOutputStream;
    import java.io.ObjectOutputStream;

    public class SerializableTest {

    public static void main(String[] args) throws Exception {

    // 01.首先创建一个需要序列化的对象
    Student stu = new Student(1, 50, "小白白", "女");
    /**
    * 02.想序列化 放到文件中
    * 从内存 到 文件 输出流
    */
    FileOutputStream fos = new FileOutputStream("e:/stu.txt");
    // 03.创建序列化对象
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    // 04.开始序列化
    oos.writeObject(stu);
    // 05.关闭流
    oos.close();
    fos.close();

    }
    }

    十 一、反序列化

    老师代码:

    重新建立一个项目

    1)一样的包名一样的实体类Student:

    package cn.bdqn.serializable;

    import java.io.Serializable;

    /**
    * 持久化:把我们内存中的内容存储到一个存储介质中的过程!
    *
    * 序列化:只是持久化技术中的一种实现方式!
    * 只能把内存中的对象保存到文件中!
    *
    * 反序列化:把文件中的对象放到内存中!
    *
    * Serializable:只是说当前类所创建的对象能否被序列化或者反序列化!
    */
    public class Student implements Serializable {

    private int id;
    private int age;
    private String name;
    private String sex;

    public int getId() {
    return id;
    }

    public void setId(int id) {
    this.id = id;
    }

    public int getAge() {
    return age;
    }

    public void setAge(int age) {
    this.age = age;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getSex() {
    return sex;
    }

    public void setSex(String sex) {
    this.sex = sex;
    }

    public Student() {
    super();
    }

    public Student(int id, int age, String name, String sex) {
    super();
    this.id = id;
    this.age = age;
    this.name = name;
    this.sex = sex;
    }

    @Override
    public String toString() {
    return "Student [id=" + id + ", age=" + age + ", name=" + name
    + ", sex=" + sex + "]";
    }

    }

    2)DeserializedTest

    package cn.bdqn.serializable;

    //反序列化测试
    import java.io.FileInputStream;
    import java.io.ObjectInputStream;

    public class Test {

    public static void main(String[] args) throws Exception {
    // 从存储介质中 拿到内存中
    FileInputStream fis = new FileInputStream("e:/stu.txt");
    // 创建反序列化对象
    ObjectInputStream ois = new ObjectInputStream(fis);
    Student student = (Student) ois.readObject();
    System.out.println(student);
    ois.close();
    fis.close();

    }

    }

    十二、作业和考试

    1、作业

    1)看视频到XML

    2)多线程的MindManager笔记

    3)做题

    4)练代码

    2、考试

    2017.04.12
    15: 02开始,15:52结束;答题时间:(48-15)=33 分钟;检查时间:2 分钟;
    成绩:87.5分
    因为自习室座位紧张,所以回家答题,网络不稳定有较严重延时的问题。(答题时间可酌情减去15分钟)

    十三、老师辛苦了!

  • 相关阅读:
    虚树学习笔记
    CF487E Tourists
    [HNOI/AHOI2018]毒瘤
    [HEOI2014]大工程
    hive初始化元数据报错
    layui简单的两个页面
    springboot配置swagger信息入门2
    spark连接hive出现错误,javax.jdo.JDODataStoreException: Required table missing : "`DBS`" in Catalog "" Schema ""
    springboot整合shiro关于任务入门3
    Flink部署Standalone模式
  • 原文地址:https://www.cnblogs.com/wsnedved2017/p/6699262.html
Copyright © 2011-2022 走看看