转换流主要有两个 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 , 该接口没有任何方法, 该接口
只是一种标记接口,标记这个类是可以序列化的
时间: 2024-10-05 04:40:52