转换流主要有两个 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