转换流


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




  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值