JAVA 打印流与转换流

转换流主要有两个 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("hehhe");  不输出到屏幕,而输出到文件    

*/

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("hehehe");
            
        } 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 , 该接口没有任何方法, 该接口

只是一种标记接口,标记这个类是可以序列化的

原文地址:https://www.cnblogs.com/zengda/p/4346115.html