黑马程序员——IO概述之转换流和键盘录入

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、转换流
流在对数据进行操作时,如果需要对指定编码表的数据进行读取或者将数据按照指定的编码表存取,就需要用到转换流。InputStreamReader和OutputStreamWriter是两个最常用到的转换流。使用方法如下。
class Demo{
	
	//创建一个字节读取流对象
	FileInputStream fis   = new FileInputStream();
	
	
	/*创建一个读取转换流对象,该转换流对象实例化时需要接收一个字节读取流对象和一个指定
	 * 的编码表,最终这个转换流对象用于读取按照该编码表编码的文件*/
	 */
	InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
	 
	 
	 
	 //创建一个字节写入流对象
	 FileOutputStream fos   = new FileOutputStream();
	 
	 
	 /*创建一个写入转换流对象,该对象在实例化时需要接收一个字节写入流对象和一个指定的
	  * 编码表,最终该转换流对象用于按照该编码表将数据存储到文件中。
	  */
	 OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
		
}

二、键盘录入
写一个程序,改程序能够读取键盘录入的数据,并将数据存储到E盘下。
/*
 * 需求:写一个程序,改程序能够读取键盘录入的数据,并将数据存储到E盘下。
 * 思路:
 * 1.本质是数据的传输,需要使用流对象
 * 2.源:键盘   目的地:e盘下一个自定义的文件
 * 3.使用System.in对象和FileWriter对象
 */
package com.itheima;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;


class Demo{
	public static void main(String[] args)throws IOException{
		
		//将System.in对象转换为字符流对象,因为键盘录入的都是字符,读取方便
		InputStreamReader isr = new InputStreamReader(System.in);
		
		//创建一个字符写入流对象,用于写入数据
		FileWriter fw = new FileWriter("e:\\abc.txt");
		
		
		//使用字符读取流的缓冲技术,提高读取效率
		BufferedReader bur =new BufferedReader(isr);
		
		//使用字符写入流的缓冲技术,提高写入效率
		BufferedWriter buw =new BufferedWriter(fw);
		
		
		//循环读取和写入
		String line = null;
		while((line=bur.readLine())!=null){
			if(line.equals("over"))   //定义一个结束标记
				break;
			buw.write(line);
			buw.newLine();
			buw.flush();
		}
		
		//关闭流资源
		if(bur!=null)
			bur.close();
		if(buw!=null)
			buw.close();
	}
	
}
	

三、改变标准录入和输出设备

我们知道,默认情况下,System.in指向的是标准输入设备(键盘),System.out指向的是标准输出设备(控制台)。。。实际开发中我们可能需要改变这两个指向,具体方法如下。
	
	//改变标准输入流指向
	System.setIn(new FileReader("123.txt"));
	
	//改变标准输出流指向
	System.setOut(new PrintStream("456.txt"));
	




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值