0
点赞
收藏
分享

微信扫一扫

输入输出流

gy2006_sw 2022-01-08 阅读 90
eclipsejava

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 条评论