转换流InputStreamReader,OutputStreamWriter 博客分类: j2se javaio
程序员文章站
2024-03-16 19:46:10
...
import java.io.*; /* 规律: 1,明确数据源和数据目的。 其实就是在明确到底是输入流还是输出流。 2,明确操作的数据是否是纯文本数据。 其实就是在明确到底是用字符流还是字节流。 需求: 1,通过键盘录入将数据打印在控制台上。 2,复制一个文本文件。 3,将键盘录入的数据存储到一个文件中。 4,将一个文件打印在控制台上。 */ class TransStream { public static void main(String[] args) throws IOException { System.setIn(new FileInputStream("CopyBmp.java")); System.setOut(new PrintStream("zz.txt")); // InputStream in = System.in; // InputStreamReader isr = new InputStreamReader(in); // BufferedReader bufr = new BufferedReader(isr); BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); // OutputStream out = System.out; // OutputStreamWriter osw = new OutputStreamWriter(out); // BufferedWriter bufw = new BufferedWriter(osw); BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out)); String line = null; while((line=bufr.readLine())!=null) { if("over".equals(line)) break; bufw.write(line.toUpperCase()); bufw.newLine(); bufw.flush(); } bufw.close(); bufr.close(); } public static void readIn()throws IOException { StringBuilder sb = new StringBuilder(); int ch = 0; while(true) { InputStream in = System.in; ch = in.read(); if(ch=='\r') continue; if(ch=='\n') { String s = sb.toString(); if("over".equals(s)) return ;//break; System.out.println(s.toUpperCase()); sb.delete(0,sb.length()); } else sb.append((char)ch); } } }