IO操作-BufferedInputStream,InputStreamReader,DataInputStream基本演示

缓冲流:前面的字节流和字符流都没有使用缓冲区,这就意味着,每次的读写操作都要交给操作系统来处理。这样的做法可能会对系统的性能造成很大的影响,因为每次访问操作都可能会引发磁盘硬件的读写或网络的访问,这些磁盘硬件读写或网络访问会占用大量的资源,影响效率。缓冲流是一种装饰器

类,目的是让原字节流,字符流新增缓冲的功能。常使用BufferedInputStream或BufferedOutputStream来进行修饰。


字节流转为字符流:将一个字节流转为一个字符流,通常使用InputStreamReader或OutputStreamWriter进行转换。


数据流:简单来说就是允许字节流直接操作基本数据类型和字符串。常用DataInputStream或DataoutputStream进行转换。

演示

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;

public static void main(String[] args) {
//		fun1();
//		fun2();
//		fun3();
}

//演示BufferedReader
	public static void fun1(){
		BufferedReader br = null;
		
		try {
			//BufferedReader的参数类型为Reader类
			br = new BufferedReader(new FileReader("F:\\test.txt"));
			String str = "";
			while((str = br.readLine()) != null){	//BufferedReader常用的方法就是readLine,如果到了文件尾部,返回null。节点流类似的方法返回-1
				System.out.println(str);
			}
			System.out.println("读取完毕!");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			//关闭流
			if(br != null){
				try {
					br.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
	
	//演示InputStreamReader
	public static void fun2(){
		//system.in为inputStream字节流,将其转为字符流
		BufferedReader br = null;
		
		try {
			//InputStreamReader的参数是InputStream类型的
			br = new BufferedReader(new InputStreamReader(System.in));
			
			System.out.println("请输入:");
			String str = br.readLine();
			System.out.println("输入的是:"+str);
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			//关闭流
			try {
				if(br != null){
					br.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	//演示DataOutputStream
	public static void fun3(){
		DataOutputStream dos = null;
		
		try {
			//DataOutputStream的参数为OutputStream类型的,所以创建一个FileOutputStream对象
			dos = new DataOutputStream(new FileOutputStream("F:\\test1.txt"));
			dos.writeInt(45);
			dos.writeByte(0);
			dos.writeLong(469553L);
			dos.writeUTF("试一下啦");
			dos.writeChar('a');
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			//关闭流
			if(dos != null){
				try {
					dos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值