转换流

来源:互联网 发布:手机上怎么改淘宝评价 编辑:程序博客网 时间:2024/06/06 09:24


1. InputStreamReader

是Reader的子类,字符流对象,字节流向字符的桥梁。InputStreamReader有一个子类就是FileReader字节转成字符流。

构造方法:InputStreamReader(InputStream in)传递字节输入流,变成字符流


代码:

/* * 转换流,将字节转成字符流 * 实现读取一行的功能 * System.in * InputStreamReader--字节变字符,Reader的子类 * BufferedReader */import java.io.*;public class TranseDemo {public static void main(String[] args)throws IOException {//获取键盘输入的字节流InputStream in = System.in;//将键盘输入流,字节流in,转成字符流,//InputStreamReader构造方法中,传递字节输入流、InputStreamReader isr = new InputStreamReader(in);//可以使用字符流缓冲区读取一行BufferedReader bfr = new BufferedReader(isr);String line = null;while((line = bfr.readLine())!=null){if("over".equals(line))break;System.out.println(line.toUpperCase());}bfr.close();}}

2. 控制台输出  System.out

 System类的静态成员变量public static final PrintStream out;返回打印流对象,知道的是打印流对象也是字节输出流OutputStream的子类。

上面的程序,readLine()读取到的字符,不能直接写到字节输出流中,将字符流数据,转成字节流数据,写回控制台


3. OutputStreamWriter  是Writer的子类,字符流对象,字符流向字节的桥梁

OutputStreamWriter构造方法,传递的是字节输出流,System.out


代码:

import java.io.*;public class TranseDemo{public static void main(String[] args) throws IOException{//获取键盘输入的字节流InputStream in = System.in;//将键盘输入流,字节流in,转成字符流,InputStreamReader构造方法中,传递字节输入流、InputStreamReader isr = new InputStreamReader(in);//可以使用字符流缓冲区读取一行BufferedReader bfr = new BufferedReader(isr);//将读取到的readline()的数据输出到控制台,数据是一个字符流//输出数据的目的 System.out;//获得字节输出流对象OutputStream out = System.out;//将字符流转成字节流OutputStreamWriter osw = new OutputStreamWriter(out);//OutputStreamWriter是字符流,可以使用字符流缓冲区对象操作,//实现写换行BufferedWriter bfw = new BufferedWriter(osw);String line = null;while((line = bfr.readLine())!=null){if("over".equals(line))break;bfw.write(line.toUpperCase());bfw.newLine();bfw.flush();}bfw.close();bfr.close();}}

4.  转换流的案例

1)读取键盘输入,输入后的内容,转成大写,保存在一个记事本中

代码:

import java.io.*;public class TranseDemo {public static void main(String[] args)throws IOException {InputStream in = System.in;//键盘输入InputStreamReader isr = new InputStreamReader(in);BufferedReader bfr = new BufferedReader(isr);OutputStream out = new FileOutputStream("c:\\upper.txt");OutputStreamWriter osw = new OutputStreamWriter(out);BufferedWriter bfw = new BufferedWriter(osw);String line = null;while((line = bfr.readLine())!=null){if("over".equalsIgnoreCase(line))break;bfw.write(line.toUpperCase());bfw.newLine();bfw.flush();}bfw.close();bfr.close();}}

2)读取一个文本文件,转大写后,输出在控制台

代码:

import java.io.*;public class TranseDemo{public static void main(String[] args)throws IOException {InputStream in = new FileInputStream("src\\cn\\itcast\\iostream\\copytext3.java");InputStreamReader isr = new InputStreamReader(in);BufferedReader bfr = new BufferedReader(isr);OutputStream out = System.out;OutputStreamWriter osw = new OutputStreamWriter(out);BufferedWriter bfw = new BufferedWriter(osw);String line = null;while((line = bfr.readLine())!=null){if("over".equalsIgnoreCase(line))break;bfw.write(line.toUpperCase());bfw.newLine();bfw.flush();}bfw.close();bfr.close();}}

3)读取一个文本文件,转大写后,输出在另一个文件中

import java.io.*;public class TranseDemo{public static void main(String[] args)throws IOException {InputStream in = new FileInputStream("src\\cn\\itcast\\iostream\\copytext3.java");InputStreamReader isr = new InputStreamReader(in);BufferedReader bfr = new BufferedReader(isr);OutputStream out = new FileOutputStream("c:\\123.java");OutputStreamWriter osw = new OutputStreamWriter(out);BufferedWriter bfw = new BufferedWriter(osw);String line = null;while((line = bfr.readLine())!=null){if("over".equalsIgnoreCase(line))break;bfw.write(line.toUpperCase());bfw.newLine();bfw.flush();}bfw.close();bfr.close();}}




0 0