IO流的学习(二)---IO流的整体框架和使用

本文深入探讨Java中的IO流,包括流的分类、体系结构和具体使用。重点关注节点流和处理流,如FileReader、FileWriter、缓冲流的使用步骤及优缺点。节点流直接连接数据源,处理流如Buffered流提供缓冲功能以提高读写效率。在选择字节流或字符流时,通常文本文件使用字符流,非文本文件使用字节流。
摘要由CSDN通过智能技术生成

IO流的学习(二)—IO流的整体框架和使用

流的操作

I/O也就是input/output的缩写也就是处理设备之间数据的传输,且传输的过程称为“流”;并且java中提供了标准的方法取读、写数据,且输入输出也就是对于程序(即内存)和外部存储结构或者网络链接来说的

  • input:也就是输入,读取外部的数据到内存之中
  • output:也就是输出,将内存中的数据输出到磁盘或者光盘等存储设备之中

关于流的分类

  • 按照处理数据类型分:字符流(char)和字节流(byte)
  • 按照流向来分:输入流和输出流
  • 按照流的角色分:节点流和处理流

关于流的图示说明
如下图所示节点流也就是链接两个传输节点最基本的流;而处理流则是加包在节点流外面的流,且处理流可以不止加有一个。可以多重叠加
在这里插入图片描述

流的体系结构

在这里插入图片描述

  • 其中InputStream\OutputStream是对于字节流,Reader\Writer是对于字符流来说的他们是抽象的基类是通过其子类来实现功能
  • 节点流中举出文件流:在类前加一个File,很好理解,也就是访问文件的流类型,它属于节点流通过直接引用文件名来创建对象;
  • 处理流中举出缓冲流:在类前面加一个Buffered也就是提供一个缓冲区来提升文件的读写速度;注意其需要通过节点流的对象来创建其对象,并且关闭流的时候也是从外层到内层来关闭流;

节点流的使用

节点流的使用步骤

四个基本步骤

  • 创建File类的对象来指出读、写的文件
  • 通过File类的对象来创建读、写的方法对象
  • 利用读写的方法来进行读写操作
  • 关闭流(因为java中没有设置自动关闭流的功能所以我们需要自己去调用它的close方法)

操作过程中需要注意的地方

  • 需要使用try\catch\finally的结构保证在能正确catch异常的同时也保证**close()**操作的正常进行

  • FileReader

    • read()方法是返回一个字符读到末尾则返回-1数字,可以通过空参构造来以单个char来接收也可以创建char[]数组来接收 所读取到的数据
    • 它不能读取不存在的文件
  • FileWriter

    • write()方法是输出操作,它所指定的文件可以不存在。如果不存在那么它就会自动创建该文件
    • 如果它所指定的文件存在则看它使用的对象构造器
      • 如果使用的构造器为new FileWrite(filePath,false);/new FileWrite(filePath);则是用输入的内容覆盖原文件内容
      • 如果使用的构造器为new FileWrite(filePath,true);则是在原文件内容后追加该输入的内容
  • 而FileInputStream和FileOutputStream与前者的差别也只是传输的时候为字节类型的数据使用read()方法时需要用byte或者byte[]来接受所读入的数据

简单的FileReader和FileWriter的使用

		/*
	 	*	 将xsxIO1109的hello.txt的文件内容读入程序中,并且输出到控制台
		* 
		* 	1. 关于read()的理解:返回读入的一个字符。如果达到文件的末尾,则返回-1;
		* 	2.异常的处理:为了保证资源可以执行close操作,需要使用try/catch/finally来操作
		* 	3.不能读取不存在的文件
		*/
	public void testFileReader(){
   
		FileReader fr=null;
		//用try-catch-finally的结构保证读取流能正常关闭
		try {
   
			//1.实例化File类的对象,指名操作的文件
			File file=new File("C:\\Users\\no\\Desktop\\hello.txt");//这里使用的是绝对路径
			//2.提供具体的流
			fr=new FileReader(file);
		
			//3.数据的读入
			int data;
			while((data=fr.read())!=-1) {
   
				System.out.print((char)data);
			}
		} catch (IOException e) {
   
			// TODO: handle exception
		}finally {
   
			//4.流的关闭操作
			
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值