1、字节流与字符流之间的转换,称作转换流
包括:InputStreamReader--->是字节流通向字符流的桥梁、OutputStreamWriter--->是字符流通向字节流的桥梁
~~~
import java.io.*;
import java.util.*;
import java.text.*;
public class TransStreamDemo{
public static void main(String []args)throws IOException{
//keyboardRW();
//fileprintToConsole();
//writeToFile();
//exceptionInfo();
printProperty();
}
//键盘读写方法
public static void keyboardRW()throws IOException{
//键盘录入的最常见形式
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw =
new BufferedWriter(new OutputStreamWriter(System.out));
String line =null;
while((line = bufr.readLine())!=null){
bufw.write(line);
//换行
bufw.newLine();
//刷新缓冲
bufw.flush();
if("end".equals(line))
break;
}
bufr.close();
bufw.close();
}
//将文本文件打印到控制台上
public static void fileprintToConsole()throws IOException{
BufferedReader bufr =
new BufferedReader(new InputStreamReader(new FileInputStream("TransStreamDemo.java")));
BufferedWriter bufw =
new BufferedWriter(new OutputStreamWriter(System.out));
String line =null;
while((line = bufr.readLine())!=null){
bufw.write(line.toUpperCase());
//换行
bufw.newLine();
//刷新缓冲
bufw.flush();
if("end".equals(line))
break;
}
bufr.close();
bufw.close();
}
//将键盘录入的信息,写到文件中
public static void writeToFile()throws IOException{
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw =
new BufferedWriter(new OutputStreamWriter(new FileOutputStream("sys.txt")));
String line =null;
while((line = bufr.readLine())!=null){
bufw.write(line);
//换行
bufw.newLine();
//刷新缓冲
bufw.flush();
if("end".equals(line))
break;
}
bufr.close();
bufw.close();
}
/**
掌握什么时候使用哪种类型的流
要做到3个明确
1、明确源和目的
源包括:内存、硬盘、键盘。使用InputStream Reader
目的包括:内存、硬盘、控制台。使用OutputStream Writer
若操作的是文本对象,那么选择Reader
若是图片、mp3等资源文件,使用Stream对象
2、明确操作的设备:内存、硬盘、控制台。确定使用哪个对象
3、。。。。。。
*/
//打印异常日志信息
public static void exceptionInfo(){
try{
int[] arr = new int[]{0,2,1};
System.out.println(arr[3]);
}catch(Exception e){
PrintStream ps = null;
try{
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String s = sdf.format(d);
//重写printStackTrace(PrintStream s) 方法
ps =new PrintStream("exception.log");
ps.print(s);
System.setOut(ps);
}catch(Exception ex){
throw new RuntimeException("日志录入出错");
}
e.printStackTrace(System.out);
}
}
//打印系统信息
public static void printProperty()throws IOException{
Properties p = System.getProperties();
PrintStream ps = new PrintStream("properties.txt");
//该方法是设置流到指定的目的中去
System.setOut(ps);
//设置打印对象
p.list(System.out);
}
}
~~~