標籤:
轉換流主要有兩個 InputStreamReader 和 OutputStreamWriter
1. InputStreamReader 主要是將位元組流輸入資料流轉換成字元輸入資料流
2. OutputStreamWriter 主要是將位元組流輸出資料流轉換成字元輸出資料流
列印流主要包含兩個:PrintStream 和 PrintWriter,分別對應位元組流和字元流
完成螢幕列印的重新導向
System.out 對應的就是 PrintStream , 預設在輸出在控制台,我們可以重新導向他的輸出,可以定向到檔案
也就是 執行 System.out.println("arry"); 不輸出到螢幕,而輸出到檔案
/* System.in 可以接收螢幕的輸入*/import java.io.*;public class PrintStreamTest02{ public static void main(String[] args){ BufferedReader br = null; try{ InputStreamReader isr = new InputStreamReader(System.in); br = new BufferedReader(isr); String temp = null; while((temp = br.readLine()) != null){ System.out.println(temp); // 如果輸出 w 退出迴圈 if("w".equals(temp)){ break; } } } catch(FileNotFoundException e){ e.printStackTrace(); } catch(IOException e){ e.printStackTrace(); } finally{ try{ if(br != null){ br.close(); } }catch(IOException e){ e.printStackTrace(); } } }}
/*完成螢幕列印的重新導向 System.out 對應的就是 PrintStream , 預設在輸出在控制台,我們可以重新導向他的輸出, 可以定向到檔案 就是 執行 System.out.println("arry"); 不輸出到螢幕,而輸出到檔案 */import java.io.*;public class PrintStreamTest01{ public static void main(String[] args){ FileOutputStream fos = null; try{ fos = new FileOutputStream("C:\\work\\Java\\arry.txt"); PrintStream ps = new PrintStream(fos); System.setOut(ps); System.out.println("arry老師太帥了!就是帥 !"); } catch(FileNotFoundException e){ e.printStackTrace(); } catch(IOException e){ e.printStackTrace(); } finally{ try{ if(fos != null){ fos.close(); } }catch(IOException e){ e.printStackTrace(); } } }}
/*完成螢幕列印的重新導向 System.out 對應的就是 PrintStream , 預設在輸出在控制台,我們可以重新導向他的輸出, 可以定向到檔案 就是 執行 System.out.println("arry"); 不輸出到螢幕,而輸出到檔案 */import java.io.*;public class PrintStreamTest01{ public static void main(String[] args){ FileOutputStream fos = null; try{ fos = new FileOutputStream("C:\\work\\Java\\arry.txt"); PrintStream ps = new PrintStream(fos); System.setOut(ps); System.out.println("arry老師太帥了!就是帥 !"); } catch(FileNotFoundException e){ e.printStackTrace(); } catch(IOException e){ e.printStackTrace(); } finally{ try{ if(fos != null){ fos.close(); } }catch(IOException e){ e.printStackTrace(); } } }}
物件流程可以將 Java 對象轉換成二進位寫入磁碟,這個過程通常叫做序列化,並且還可
以從磁碟讀出完整的 Java 對象,而這個過程叫做還原序列化。
物件流程主要包括:ObjectInputStream 和 ObjectOutputStream
如何?序列化和還原序列化
/* OutputStreamWriter 主要是將位元組流輸出資料流轉換成字元輸出資料流*/import java.io.*;public class OutputStreamWriterTest01{ public static void main(String[] args){ BufferedWriter bw = null; try{ // 位元組輸出資料流 //FileOutputStream fos = new FileOutputStream("C:\\work\\Java\\arry.txt"); // 字元輸出資料流 //OutputStreamWriter osw = new OutputStreamWriter(fos); bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:\\work\\Java\\arry.txt"))); bw.write("keke老師新婚快樂 !"); bw.newLine(); bw.write("祝福師傅和師娘 新婚快樂,百年好合,白頭偕老,早生貴子 ! !!!!"); bw.flush(); } catch(FileNotFoundException e){ e.printStackTrace(); } catch(IOException e){ e.printStackTrace(); } finally{ try{ if(bw != null){ bw.close(); } } catch(IOException e){ e.printStackTrace(); } } }}
/* 物件流程: 物件流程可以將java對象轉換成二進位寫入磁碟,這個過程叫做“序列化” 還可以從磁碟讀取完整的Java對象,這個過程叫 “還原序列化” 包括:ObjectInputStream 和 ObjectOutputStream java.io.Serializable */import java.io.*;public class ObjectStreamTest02{ public static void main(String[] ags){ ObjectInputStream ois = null; try{ FileInputStream fis = new FileInputStream("C:\\work\\Java\\arry.txt"); ois = new ObjectInputStream(fis); // 還原序列化 Student stu = (Student)ois.readObject(); System.out.println(stu.name); }catch(FileNotFoundException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }catch(ClassNotFoundException e){ e.printStackTrace(); } finally{ try{ if(ois != null){ ois.close(); } }catch(IOException e){ e.printStackTrace(); } } }}// 實現序列化介面class Student implements Serializable{ String name;}
如果實現序列化該類必須實現序列化介面 java.io. Serializable , 該介面沒有任何方法, 該介面
只是一種標記介面,標記這個類是可以序列化的
JAVA 列印流與轉換流