Java输入流

撰写时间:2019年04月27日

IO流:按照流的流向来分,可以分为输入流和输出流,输出都是从程序运行所在内存
的角度来划分的,是相对的。就比如借钱,我向你借钱,对于你来说是支出(输出),
对于我来说是收入(输入),换过来又不一样的,所有说输入输出是相对的。
输入流:只能读不能写,由InputStream和Reader作为基类
输出流:只能写不能读,由OutputStream和Writer作为基类
InputStream和Reader是所有输入流的抽象基类,它们的方法是所有输入流都可使用
的方法。InputStream操作的数据单元是字节,Reader操作的数据单元是字符。
InputStream写法:

public class InputStreamDemo {
		public static void main(String[] args) {
//File file = new File("D:\\z\\BaseDataType.java");
			try {// 11:00
				// InputStream 抽象基类,抽象不能直接实例,需要用到子类
				// 子类文件类:FileInputStream
				InputStream in = new FileInputStream("D:\\z\\BaseDataType.java");
				//因为utf-8 每个字符=3位  所有尽量给它3的整数倍
				byte[] bs = new byte[1026];// 临时存放读取数据
				int count = 0;// 记录读取的字节数
				while ((count = in.read(bs, 0, bs.length)) != -1) {//读取不到返回-1
					System.out.println(new String(bs, 0, count));
				}
				// 流使用完后一定要关闭
				in.close();
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
}

常用的还是:Reader

public class ReaderDemo {
		public static void main(String[] args) {
			try {
				//Reader抽象基类,抽象不能直接实例,需要用到子类FileReader
				Reader reader = new FileReader("D:\\z\\BaseDataType.java");
//char[100]位数给的过大过小都不好根据实际给
				char[] cs = new char[100];// 临时存放读取数据 
				int count = 0;// 记录读取的字节数
//读取不到返回-1
				while ((count = reader.read(cs, 0, cs.length)) != -1) {								System.out.print(new String(cs, 0, count));
				}
				// 关闭流
				reader.close();
			} catch (FileNotFoundException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
}

路径的分隔符\可以换成/
在Java中支持将/当做与平台无关的分隔符。什么叫与平台无关?就是所有平台用它都
认。
两段代码执行出来的结果都是一样的。InputStream和Reader的方法基本一致,只是
InputStream读取的是字节,使用的参数是byte数组(byte[]),而Reader读取的是
字符,使用的参数是char数组(char[])InputStream和Reader都是抽象类,本身不能
创建实例,但它们分别有一个用于读取文件的输入流:FileInputStream和 FileReader。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值