IO流复习(一)

IO流框架图


IO流最终要以对象来体现,对象都存在IO包中。

流也进行分类:

1:输入流(读)和输出流(写)。

2:因为处理的数据不同,分为字节流和字符流。 

 

那么为什么要有字符流呢?

因为字符每个国家都不一样。所以涉及到了字符编码问题。那么GBK编码的中文用unicode编码解析是有问题的。所以需要获取中文字节数据的同时+指定的编码表才可以解析正确数据。为了方便于文字的解析。所以将字节流和编码表封装成对象。这个对象就是字符流。这就是字符流的由来。只要操作的字符数据,优先考虑使用字符流体系。

 

字符流

 

import java.io.FileWriter;
import java.io.IOException;

public class Test17 {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		//创建一个文件流对象,并明确要操作的文件
		//将文件创建到指定的路径,如果有同名文件会被覆盖
		//这一步主要是确定要存储数据的目的地
		FileWriter fw = new FileWriter("a.txt");
		//调用write方法,将数据写入流中
		fw.write("abcde");
		//将流中的数据刷新到目的地中
		/*flush()和close()的区别:flush()刷新后流还可以继续写入数据
		close()关闭流之前会刷新流中的数据 但是关闭后不可以再续写数据*/
		fw.flush();
		//关闭流资源,在关闭之前会对数据刷新一次,将数据刷新到目的地中
		fw.close();
	}
}

 

close()flush()的区别:

flush():将缓冲区的数据刷到目的地中后,流可以使用。

close():将缓冲区的数据刷到目的地中后,流就关闭了,该方法主要用于结束调用的底层资源。

 

流在操作过程中的异常处理:

import java.io.FileWriter;
import java.io.IOException;

public class Test16 {
	public static void main(String[] args) {
	FileWriter fw = null;
	try {
		//指定的路径不正确或不存在 而抛出异常
		fw = new FileWriter("Demo.java");
		//数据写入过多,可能会写满硬盘从而抛出异常
		fw.write("avddd");
	} catch (IOException e) {
		
		e.printStackTrace();
	}
	
	try {
		if (fw!=null) {
			//关闭的资源为空时不能调用close方法 从而抛出异常
			fw.close();
		}
		fw.flush();
	} catch (IOException e) {
		
		e.printStackTrace();
	}
}
}


 

FileReader使用Reader体系,读取一个文本文件中的数据。

创建可以读取文本文件的流对象。让创建好的流对象和指定的文件相关联。

 

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Test18 {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		//创建可以读取文件的流对象FileReader 将流对象和文件相关联
		FileReader fr = new FileReader("a.txt");
		int ch =0;
		//调用read方法 读取一个字符
		while ((ch = fr.read())!=-1) {
			System.out.println((char)ch);
		}
	}
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值