FileInputStream和FileReader的区别与用法

         FileInputStream和FileReader都是用于读取文件的输入流,二者的不同在于,FileInputStream是以字节流的方式读入数据,而FileReader是以字符流的方式读取的。

        举个例子

saber万岁!!!

         这句话有英文字母,有汉字,还有标点符号。

         英文字母是一个字节

         汉字占两个字节

         标点符号占两个字节

         但是他们每个都是一个字符

        

public void ReadFileByFileStreamInput(File file) {//以字节方式读数据
		
		try {
			FileInputStream fis=new FileInputStream(file);
			byte[] buffer=new byte[2048];
			int len=fis.read(buffer);
			System.out.println("文件的内容是:"+new String(buffer,0,6));
	
			fis.close();

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

他的结果预想是saber万,但是实际情况确实“万”并没有被读完,所以没有被完全解析

public void ReadFileByFileReader(File file) {
		
		try {
			FileReader fr=new FileReader(file);
			int i;
			char[] buffer=new char[2048];
			while((i=fr.read(buffer))!=-1) {
				System.out.println(new String(buffer,0,6));
			}
			
			

			fr.close();

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 但是如果以字符的方式读取的话,“万”字就可以被都出来了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值