输入输出流

InputStream

InputStream是一个抽象类,是一个字节流,一次读取一个字节。

read()方法,读取下一个字节数据,并自动转换为int类型。如没有数据可以读取则返回-1;

read(byte[])方法,读取多个字节数据,并写到byte[]中,返回读取的字节数。返回-1表示数据流结束;

close():无返回值方法,用于关闭流。

OutputStream

OutputStream是一个抽象类,是一个字节流,一次写出一个字节。

write(int b):无返回值方法,向输出流中写一个字节。

write(byte[],int off,int len) 将byte[]数组中的数据从off位置开始,写到输出流中,到len个字节。

close():无返回值类型,用于关闭流。

FileInputStream

FileInputStream是InputStream的子类,是一个节点流,可以从一个文件中读取数据,参数可以是String、File和FileDescriptor,一般多使用String类型参数。
FileNotFoundException是一个受检型异常、非运行时异常。

捕捉异常try-resources的写法,用于简化编程,可以避免使用finally进行资源关闭操作

try (InputStream is = new FileInputStream("data\\sum.txt")) {
			int kk=0;
			while((kk=is.read())!=-1) {
				System.out.print((char)kk);
			}
		}

文件拷贝

一次操作一个字节可以拷贝任何内容的文件

try (
				// 准备资源
				InputStream is = new FileInputStream("data\\long.txt");
				OutputStream os = new FileOutputStream("data\\xin.txt");) {
			// 从输入流中读取数据
			int bb=is.read();
			while(bb!=-1) {
				// 向输出流中写出数据
				os.write(bb);
				bb=is.read();
			}
		}

但是一次一字节读写硬盘的次数太多,所以会导致执行效率低。可以一次读取多个字节内容。

try (
				// 准备资源
				InputStream is = new FileInputStream("data\\long.txt");
				OutputStream os = new FileOutputStream("data\\xin.txt");) {
			byte[] buffer = new byte[8192];
			int len = is.read(buffer); // 从is中读取最多8192个字节的数据写入到byte[]中,返回读取的字节数
			while(len>0) {
				os.write(buffer,0,len);  //读取了len个字节的数据,则写出len个字节
				len=is.read(buffer);
			}
		}

简化写法

try (InputStream is = new FileInputStream("data\\long.txt");
				OutputStream os = new FileOutputStream("data\\xin.txt");) {
			byte[] buffer=new byte[8192];//8k
			int len=0;
			while((len=is.read(buffer))>0) {
				os.write(buffer,0,len);
			}
		}

基本输入输出方法

System类是java中功能非常强大的、非常有用的类,提供了标准输入/输出和运行时系统的系统信息

  • 1、System类不能创建对象,所有方法和属性都是静态的,例如System.getProperty和System.in
  • 2、System.in:InputStream流对应于键盘输入或由指定的其他输入源
  •  System.out:把输出送到缺省的输出流中,屏幕显示
    
  •  System.err:一般用于把错误信息传送到缺省的错误流中,默认屏幕显示,红色
    
  • 从键盘读取数据 Scanner sc=new Scanner(System.in);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值