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); } }