zoukankan      html  css  js  c++  java
  •   1 ---------------------------------------------------I/O-------------------------------------------------
      2 源数据源----->程序------>目标数据源
      3 (输入流)读入    (输出流)读出
      4 输入输出流是相对计算机内存而言
      5 
      6 
      7 1.按流向划分
      8 输出流 
      9     OutputStream,Writer
     10 输入流
     11     InputStream,Reader
     12     
     13 2.按处理数据单元划分
     14 ----------------------------字节流--------------------------
     15 1.    输入流
     16         (基类)InputStream
     17         方法:int read()  返回值是字节对应的整型数字
     18               int read(byte[] b)  返回值是字节的个数(b的长度)
     19               int read(byte[] b,int off,int len)  将读取的第一个字节存储在元素b[off]中
     20               void close()
     21               int available() 可以从输入流中读取的字节数目
     22         (子类)FileInputStream
     23         方法:FileInputStream(File file)
     24               FileInputStream(String name)
     25         实现步骤
     26             引入相关类-->构造文件输入流,FileInputStream对象-->读取文本文件的数据-->关闭文件流对象
     27             
     28 2.    输出流 ★★string变成getByte变成字节★★
     29         (基类)OutputStream
     30         方法:int write()  
     31               int write(byte[] b)  
     32               int write(byte[] b,int off,int len)  
     33               void close()
     34               void flush()  强制把缓冲区的数据写到输出流中
     35         (子类)FileOutputStream ★如果相应的文件不存在,自动创建一个空的文件★
     36         方法:FileOutputStream(File file)    
     37               FileOutputStream(String name)
     38               FileOutputStream(String name,boolean append) 覆盖原来的内容
     39         实现步骤
     40             引入相关类-->构造文件输出流,FileOutputStream对象-->把数据写入文本文件-->关闭文件流对象
     41             
     42 --------------------------字符流-------------------------------
     43 1.    输入流
     44         (基类)Reader
     45         (子类)InputStreamReader
     46         方法:InputStreamReader(InputStream in)
     47               InputStreamReader(InputStream in,String charsetName) 编码格式
     48        (孙子类)FileReader ★★只能按照本地平台默认的字符编码来读★★
     49         方法:FileReader(File file)
     50               FileReader(String pathName,boolean append)
     51 ◆◆◆ (孙子类2)BufferedReader
     52         实现步骤
     53             引入相关类-->构造BufferedReader和FileReader对象-->调用read()方法读取数据-->流对象关闭close()
     54               
     55 2.    输出流
     56         (基类)Writer
     57         (子类)OutputStreamWriter
     58         方法:OutputStreamWriter(OutputStream in)
     59               OutputStreamWriter(OutputStream in,String charsetName) 编码格式
     60         (孙子类)FileWriter ★★只能按照本地平台默认的字符编码来读★★
     61                     本地平台的字符编码获得:system.getProperty("file.encoding");
     62         方法:FileWriter(File file)
     63               FileWriter(String pathName,boolean append)
     64 ◆◆◆ (孙子类2)BufferedWriter
     65         实现步骤
     66             引入相关类-->构造BufferedWriter和FileWriter对象-->调用write()方法写数据-->流对象的清空和关闭flush()和close()
     67             
     68 
     69 
     70 -------------------------序列化和反序列化--------------------
     71 序列化:将对象的状态写到特定的流中的过程
     72 反序列化:从特定的流中获取数据重新构建对象的过程
     73 
     74 如果对象可以实现实现Serializable接口,那么该对象可以序列化或反序列化
     75 序列化
     76 步骤:
     77     实现Serializable接口--->创建对象输出流--->调用writeObject()方法将对象写入文件--->关闭对象输出流
     78                         ObjectOutputStream
     79 
     80 反序列化
     81 步骤:
     82     实现Serializable接口--->创建对象输入流--->调用readObject()方法读取对象--->关闭对象输入流
     83                         ObjectInputStream
     84 
     85 范例:
     86 public class Student implements Serializable{
     87     private int id;
     88     private int age;
     89     private String name;
     90     //当不想序列化属性时,可以加上transient
     91     private transient String password;
     92 
     93     public Student() {}
     94     
     95     public Student(int id, int age, String name, String password) {
     96         super();
     97         this.id = id;
     98         this.age = age;
     99         this.name = name;
    100         this.password = password;
    101     }
    102 
    103     public int getId() {
    104         return id;
    105     }
    106     public void setId(int id) {
    107         this.id = id;
    108     }
    109     public int getAge() {
    110         return age;
    111     }
    112     public void setAge(int age) {
    113         this.age = age;
    114     }
    115     public String getName() {
    116         return name;
    117     }
    118     public void setName(String name) {
    119         this.name = name;
    120     }
    121     public String getPassword() {
    122         return password;
    123     }
    124 
    125     public void setPassword(String password) {
    126         this.password = password;
    127     }
    128 }
    129 
    130 public class ObjectSerDemo {
    131     public static void main(String[] args) {
    132         FileOutputStream fos = null;
    133         ObjectOutputStream oos = null;
    134         ObjectInputStream ois = null;
    135         try {
    136             //创建对象序列化需要的输出流
    137             fos = new FileOutputStream("E:\Java实训课总结\2016.3.26\stu.txt");
    138             oos = new ObjectOutputStream(fos);
    139             //创建对象
    140             Student stu = new Student(1,18,"张三","12345");
    141             //序列化对象
    142             oos.writeObject(stu);
    143             //反序列化
    144             ois = new ObjectInputStream(new FileInputStream("E:\Java实训课总结\2016.3.26\stu.txt"));
    145             Student stu1 = (Student)ois.readObject();
    146             System.out.println("反序列化后:" );
    147             System.out.println("学号:" + stu1.getId());
    148             System.out.println("年龄:" + stu1.getAge());
    149             System.out.println("姓名:" + stu1.getName());
    150             System.out.println("密码:" + stu1.getPassword());
    151         } catch (FileNotFoundException e) {
    152             e.printStackTrace();
    153         } catch (IOException e) {
    154             e.printStackTrace();
    155         } catch (ClassNotFoundException e) {
    156             e.printStackTrace();
    157         } finally {
    158             //关闭流
    159             try {
    160                 oos.close();
    161                 fos.close();
    162                 ois.close();
    163             } catch (IOException e) {
    164                 e.printStackTrace();
    165             }
    166         }
    167     }
    168 }
  • 相关阅读:
    IDEA debug漏洞第一篇(weblogic,cve-2017-10271)
    IDEA+docker,进行远程漏洞调试(weblogic)
    2019-2020-1 20199326《Linux内核原理与分析》第四周作业
    2019-2020-1 20199326《Linux内核原理与分析》第三周作业
    2019-2020-1 20199326《Linux内核原理与分析》第二周作业
    2019-2020-1 20199326《Linux内核原理与分析》第一周作业
    DEV插件下的控件Grid和Gridlookupedit控件的结合使用
    foreach循环的简单写法
    dev设置子窗体的初始位置,grid控件表头的属性设置
    C#中,用户控件UserControl里面用Panl加载UserControl,并实现利用委托互相传值
  • 原文地址:https://www.cnblogs.com/ivy-xu/p/5330540.html
Copyright © 2011-2022 走看看