IO流

IO流

1. IO流概述

​ 大多数应用程序都需要实现与设备之间的数据传输,例如键盘可以输入数据,显示器可以显示程序的运行结果等。在Java中,将这种通过不同输入输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象的表述为“流”,程序允许通过流的方式与输入输出设备进行数据传输。Java中的“流”都位于java.io包中,称之为IO(输入输出)流。
输入流【input】和输出流【out】是相对于内存设备而言的,将外设中的数据读取到内存中即输入,将内存的数据写入到外设中即输出。

2. IO流分类

按照数据处理单位分为:字节流、字符流

按照数据流向划分分为:输入流、输出流

3. 字节流

3.1 字节输入流
构造方法:
	FileInputStream(String fileName);
		根据用户指定的文件路径,创建对应FileInputStream字节输入流对象
	FileInputStream(File file);	
		根据用户指定的File类对象,创建对应FileInputStream字节输入流对象

成员方法:
	int read();
		从文件中读取一个字节数据返回,返回值类型为int类型,但是实际有效数据空间为当前int类型的低8位
	int read(byte[] buffer);【重点方法】
		从文件中读取数据保存到byte类型的缓冲数组中,返回值类型为int类型,是读取到的字节个数。
	int read(byte[] buffer, int offset, int count);	
		从文件中读取数据保存到byte类型的缓冲数组中,要求从offset位置开始存储数据,最大允许存储个位为count,
		返回值类型是真实读取到的字节个数。
	tips:
		以上所有read方法,如果读取到文件末尾,返回值为-1 EOF End Of File
3.2 字节输出流
构造方法:
	FileOutputStream(String filePath);
	根据用户指定的文件路径(相对路径/绝对路径),创建对应的FileOutputStream类对象
	FileOutputStream(File file);
	根据用户指定的File对象,创建对应的FileOutputStream类对象
	FileOutputStream(String filePath, boolean append);
	根据用户指定的文件路径(相对路径/绝对路径),创建对应的FileOutputStream类对象。append对应数据为
	true,表示追加写
	FileOutputStream(File file, boolean append);
	根据用户指定的File对象,创建对应的FileOutputStream类对象。append对应数据为true,表示追加写

	1. FileOutputStream构造方法拥有创建文件的能力,如果当前指定的路径合法,并且有可写入权限,当前文件不
	存在的情况下,可以进行创建操作.
	2. FileOutputStream默认写入数据的方式【删除写/清空写】。首先删除当文件的所有内容,重写写入数据。如
	果要求完成追加写操作。需要在构造方法中,加入一个参数boolean append

成员方法:
	void write(int b);
	写入一个字节数据到文件中
	void write(byte[] arr);
	写入一个字节数组数据到文件中
	void write(byte[] arr, int offset, int length);	
	写入一个字节数组数组到文件中,要求从指定位置offset开始,计数长度为length

4. 字符流

4.1 字符输入流
构造方法:
	FileReader(String filePath);
	根据用户指定的String类型文件路径(相对路径/绝对路径),创建FileReader字符输入流对象
	FileReader(File file);
	根据用户指定的File类对象,创建FileReader字符输入流对象
	
成员方法:
	int read();
	从指定文件中读取一个字符数据,返回值为int类型,真实有效数据为int类型的低16位
	int read(char[] buffer);	
	从文件中读取数据到字符数组buffer内,返回值类型是读取到的字符个数
	int read(char[] buffer, int offset, int length);	
	从文件中读取数据到字符数组buffer中,要求从offset位置开始存储数据,最大容量为length,返回值为真实读取到的字符个数
4.2 字符输出流
构造方法:
	FileWriter(String filePath);
	根据用户指定的文件路径(相对路径/绝对路径),创建对应的FileWriter类对象
	FileWriter(File file);
	根据用户指定的File对象,创建对应的FileWriter类对象
	FileWriter(String filePath, boolean append);
	根据用户指定的文件路径(相对路径/绝对路径),创建对应的FileWriter类对象。append对应数据为
	true,表示追加写
	FileWriter(File file, boolean append);
	根据用户指定的File对象,创建对应的FileWriter类对象。append对应数据为true,表示追加写

	1. FileWriter构造方法拥有创建文件的能力,如果当前指定的路径合法,并且有可写入权限,当前文件不
	存在的情况下,可以进行创建操作.
	2. FileWriter默认写入数据的方式【删除写/清空写】。首先删除当文件的所有内容,重写写入数据。如
	果要求完成追加写操作。需要在构造方法中,加入一个参数boolean append

成员方法:
	void write(int ch);
	写入一个字符数据到文件中
	void write(char[] arr);
	写入一个字符数组数据到文件中
	void write(char[] arr, int offset, int length);	
	写入一个字符数组数组到文件中,要求从指定位置offset开始,计数长度为length

5. 缓冲流

5.1 字节缓冲流
字节输入缓冲流
    BufferedInputStream 有且只是提供缓冲空间和对应缓冲空间操作方法。【缓冲空间为8KB字节数组】
    构造方法:
        BufferedInputStream(InputStream in);
        字节输入缓冲流对象创建,需要对应的InputStream字节输入流对象作为构造方法参数,提供的对应的读取文
                件能力。所有读取文件相关方法,都是由InputStream提供。
    成员方法:
        int read();
        int read(byte[] buf);
        int read(byte[] buf, int off, int len);
        这里的所有操作不是从文件中读取数据,而是在BufferedInputStream缓冲区中读取数据。
字节输出缓冲流
	BufferedOutputStream 有且只是提供缓冲空间和对应缓冲空间操作方法。【缓冲空间为8KB字节数组】
	构造方法:
		BufferedOutputStream(OutputStream out);
    	字节缓冲输出流对象创建需要依赖于OutputStream 字节输出流对象,提供输出数据能力。
    成员方法:
    	void write(int b);
    	void write(byte[] buf);
    	void write(byte[] buf, int off, int len);
    	每一次调用write方法,不是直接写入数据到文件中,而且存储在对应的缓冲空间。有三种情况缓冲空间数据真实的写入到文件中/输出
    	1. 缓冲区已满
    	2. 程序退出
    	3. 自行调用flush方法。
5.2 字符缓冲流
字符输入缓冲流
	BufferedReader 有且只是提供缓冲空间和对应缓冲空间操作方法。【缓冲空间为16KB字符数组】
	构造方法:
		BufferedReader(Reader in);
			字符输入缓冲流对象创建,需要对应的Reader字符输入流对象作为构造方法参数,提供的对应的读取文
			件能力。所有读取文件相关方法,都是由Reader提供。
	成员方法:
		int read();
		int read(char[] buf);
		int read(char[] buf, int off, int len);
		String readLine();
			从缓冲区中读取一行文本数据。行尾标记为\r\n
			这里的所有操作不是从文件中读取数据,而是在BufferedReader缓冲区中读取数据。
字符输出缓冲流
	BufferedWriter 有且只是提供缓冲空间和对应缓冲空间操作方法。【缓冲空间为16KB字符数组】
	构造方法:
		BufferedWriter(Writer out);
        	字符缓冲输出流对象创建需要依赖于Writer 字符输出流对象,提供输出数据能力。
    成员方法:
    	void write(int ch);
    	void write(char[] buf);
    	void write(char[] buf, int off, int len);
    	void newLine();
    		换行+回车在文件中写入一个\r\n
    		每一次调用write方法,不是直接写入数据到文件中,而且存储在对应的缓冲空间。有三种情况缓冲空间数据真
    		实的写入到文件中/输出
    			1. 缓冲区已满
    			2. 程序退出
    			3. 自行调用flush方法。

在反射篇章中对文件的读取使用的是IO流操作,请移步查看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值