69期-Java SE-022-IO流-3-001-002

 

### 緩衝輸出流

```java
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class Test {
    public static void main(String[] args) {
        File file = new File("/Users/southwind/Desktop/test.txt");
        OutputStream outputStream;
        try {
            outputStream = new FileOutputStream(file);
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
            String str = "Java是一門面向對象的編程語言";
            byte[] bytes = str.getBytes();
            bufferedOutputStream.write(97);
            bufferedOutputStream.flush();
            bufferedOutputStream.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
```



### 序列化和反序列化

序列化就是將內存中的對象輸出到硬盤文件中進行保存,反序列化就是將硬盤中保存的數據還原成內存中的對象。

- 序列化

```java
import java.io.Serializable;

public class User implements Serializable {
    private int id;
    private String name;
    private int age;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
}
```



```java
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;

public class Test2 {
    public static void main(String[] args) {
        User user = new User();
        user.setId(1);
        user.setName("張三");
        user.setAge(22);
        File file = new File("/Users/southwind/Desktop/java.txt");
        try {
            OutputStream outputStream = new FileOutputStream(file);
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
            objectOutputStream.writeObject(user);
            objectOutputStream.flush();
            objectOutputStream.close();
            outputStream.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
```



- 反序列化

```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;

public class Test3 {
    public static void main(String[] args) {
        File file = new File("/Users/southwind/Desktop/java.txt");
        try {
            InputStream inputStream = new FileInputStream(file);
            ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
            User user = (User) objectInputStream.readObject();
            System.out.println(user.getId());
            System.out.println(user.getName());
            System.out.println(user.getAge());
            objectInputStream.close();
            inputStream.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
```



```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;

public class Test4 {
    public static void main(String[] args) {
        //使用IO流完成文件複製
        File file = new File("/Users/southwind/Desktop/1.jpg");
        try {
//            InputStream inputStream = new FileInputStream(file);
//            byte[] bytes = new byte[100];
//            int length = inputStream.read(bytes);
//            File file2 = new File("/Users/southwind/Desktop/test2.txt");
//            OutputStream outputStream = new FileOutputStream(file2);
//            outputStream.write(bytes,0,length);
            
            InputStream inputStream = new FileInputStream(file);
            File file2 = new File("/Users/southwind/Desktop/2.jpg");
            OutputStream outputStream = new FileOutputStream(file2);
            int temp = 0;
            while((temp = inputStream.read())!=-1) {
                outputStream.write(temp);
            }
            
//            Reader reader = new FileReader(file);
//            int temp = 0;
//            Writer writer = new FileWriter(file2);
//            while((temp = reader.read())!=-1) {
//                writer.write(temp);
//            }
//            writer.close();
//            reader.close();
            
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
```



```java
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;

public class Test5 {
    public static void main(String[] args) {
        File file = new File("/Users/southwind/Desktop/1.jpg");
        try {
//            InputStream inputStream = new FileInputStream(file);
//            BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
//            File file2 = new File("/Users/southwind/Desktop/2.jpg");
//            OutputStream outputStream = new FileOutputStream(file2);
//            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
//            int temp = 0;
//            while((temp = bufferedInputStream.read())!=-1) {
//                bufferedOutputStream.write(temp);
//            }
//            bufferedInputStream.close();
//            bufferedOutputStream.close();
//            inputStream.close();
//            outputStream.close();
            
            InputStream inputStream = new FileInputStream(file);
            Reader reader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(reader);
            File file2 = new File("/Users/southwind/Desktop/2.jpg");
            OutputStream outputStream = new FileOutputStream(file2);
            Writer writer = new OutputStreamWriter(outputStream);
            BufferedWriter bufferedWriter = new BufferedWriter(writer);
            int temp = 0;
            while((temp = bufferedReader.read())!=-1) {
                bufferedWriter.write(temp);
            }
            bufferedWriter.close();
            bufferedReader.close();
            reader.close();
            writer.close();
            inputStream.close();
            outputStream.close();
            
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
```



### 反射

常規狀況下是經過類來建立實例化對象的,反射就是將這一過程進行反轉,經過實例化對象來獲取對應的類的信息。

### Class

Class 類是反射的源頭,Class 類是專門用來描述其餘類的類,Class 的每個實例化對象就對應一個類的結構。

- 調用 Class 類的靜態方法 forName(String className),將目標類的全限定類名(包含所在包信息的類名全程)做爲參數傳入,便可獲取對應的 Class 對象。

  ```java
  try {
    Class clazz = Class.forName("com.test.entity.User");
    System.out.println(clazz);
  } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
  ```

- 經過目標類的 class 建立,Java 中的每個類均可以調用 class,這裏的 class 不是屬性,叫作"類字面量",其做用是獲取內存中目標類型 class 對象的引用。

  ```java
  Class clazz2 = User.class;
  System.out.println(clazz2);
  ```

- 經過目標類實例化對象的 getClass() 方法建立,getClass() 方法定義在 Object 類中,被全部的類繼承,經過實例化對象獲取內存中改類 class 對象的引用。

  ```java
  User user = new User();
  Class clazz3 = user.getClass();
  System.out.println(clazz3);
  ```

Class 的經常使用方法

public native boolean isInterface()                                                                判斷目標類是否爲接口

public native boolean isArray()                                                                        判斷目標類是否爲數組

public native boolean isAnnotation()                                                            判斷目標類是否爲註解

public String getName()                                                                                    獲取目標類的全限定類名

public native Class getSuperclass()                                                                獲取目標類的父類

Test.javajava

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class Test {
    public static void main(String[] args) {
        File file = new File("/Users/southwind/Desktop/test.txt");
        OutputStream outputStream;
        try {
            outputStream = new FileOutputStream(file);
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
            String str = "Java是一門面向對象的編程語言";
            byte[] bytes = str.getBytes();
            bufferedOutputStream.write(97);
            bufferedOutputStream.flush();
            bufferedOutputStream.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

Test.2java編程

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;

public class Test2 {
    public static void main(String[] args) {
        User user = new User();
        user.setId(1);
        user.setName("張三");
        user.setAge(22);
        File file = new File("/Users/southwind/Desktop/java.txt");
        try {
            OutputStream outputStream = new FileOutputStream(file);
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
            objectOutputStream.writeObject(user);
            objectOutputStream.flush();
            objectOutputStream.close();
            outputStream.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

Test3.java數組

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;

public class Test3 {
    public static void main(String[] args) {
        File file = new File("/Users/southwind/Desktop/java.txt");
        try {
            InputStream inputStream = new FileInputStream(file);
            ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
            User user = (User) objectInputStream.readObject();
            System.out.println(user.getId());
            System.out.println(user.getName());
            System.out.println(user.getAge());
            objectInputStream.close();
            inputStream.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

Test4.java編程語言

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;

public class Test4 {
    public static void main(String[] args) {
        //使用IO流完成文件複製
        File file = new File("/Users/southwind/Desktop/1.jpg");
        try {
//            InputStream inputStream = new FileInputStream(file);
//            byte[] bytes = new byte[100];
//            int length = inputStream.read(bytes);
//            File file2 = new File("/Users/southwind/Desktop/test2.txt");
//            OutputStream outputStream = new FileOutputStream(file2);
//            outputStream.write(bytes,0,length);
            
            InputStream inputStream = new FileInputStream(file);
            File file2 = new File("/Users/southwind/Desktop/2.jpg");
            OutputStream outputStream = new FileOutputStream(file2);
            int temp = 0;
            while((temp = inputStream.read())!=-1) {
                outputStream.write(temp);
            }
            
//            Reader reader = new FileReader(file);
//            int temp = 0;
//            Writer writer = new FileWriter(file2);
//            while((temp = reader.read())!=-1) {
//                writer.write(temp);
//            }
//            writer.close();
//            reader.close();
            
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

Test5.javathis

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;

public class Test5 {
    public static void main(String[] args) {
        File file = new File("/Users/southwind/Desktop/test.txt");
        try {
            InputStream inputStream = new FileInputStream(file);
            BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
            File file2 = new File("/Users/southwind/Desktop/test2.txt");
            OutputStream outputStream = new FileOutputStream(file2);
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
            int temp = 0;
            while((temp = bufferedInputStream.read())!=-1) {
                bufferedOutputStream.write(temp);
            }
            bufferedInputStream.close();
            bufferedOutputStream.close();
            inputStream.close();
            outputStream.close();
            
//            InputStream inputStream = new FileInputStream(file);
//            Reader reader = new InputStreamReader(inputStream);
//            BufferedReader bufferedReader = new BufferedReader(reader);
//            File file2 = new File("/Users/southwind/Desktop/test2.txt");
//            OutputStream outputStream = new FileOutputStream(file2);
//            Writer writer = new OutputStreamWriter(outputStream);
//            BufferedWriter bufferedWriter = new BufferedWriter(writer);
//            String str = "";
//            while((str = bufferedReader.readLine())!=null) {
//                bufferedWriter.write(str);
//            }
//            bufferedWriter.close();
//            bufferedReader.close();
//            reader.close();
//            writer.close();
//            inputStream.close();
//            outputStream.close();
            
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

Test6.javaspa

public class Test6 {
    public static void main(String[] args) {
        
    }
}

 

User.javacode

import java.io.Serializable;

public class User implements Serializable {
    private int id;
    private String name;
    private int age;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
}

 

Test.java對象

package com.test.entity;

public class Test {
    public static void main(String[] args) {
        try {
            Class clazz = Class.forName("com.test.entity.User");
//            System.out.println(clazz);
//            Class clazz2 = User.class;
//            System.out.println(clazz2);
//            User user = new User();
//            Class clazz3 = user.getClass();
//            System.out.println(clazz3);
//            System.out.println(clazz.hashCode());
//            System.out.println(clazz2.hashCode());
//            System.out.println(clazz3.hashCode());
//            System.out.println(clazz == clazz2);
//            System.out.println(clazz2 == clazz3);
            
            System.out.println(clazz.isInterface());
            System.out.println(clazz.isArray());
            System.out.println(clazz.isAnnotation());
            System.out.println(clazz.getName());
            System.out.println(clazz.getSuperclass());
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

User.javablog

package com.test.entity;

public class User {
    
}
相關文章
相關標籤/搜索