### 緩衝輸出流 ```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 { }