[黑马程序员]第三篇:io流

----------------------------------- android培训 java培训 、期待与您交流! --------------------------------------

关于流,流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象,通俗的可以理解为水流。

io流的分类

  • 根据数据类型的不同可以分为:字符流和字节流。
  • 根据数据流向的不同可以分为:输入流和输出流。
字节流的操作也就是读取的过程中查询了对应的码表,字节流的读取的时候读到一个字节就返回一个字节,而字符流是读取几个字符读取时先去查询指定的码表,再将查到的字符返回。
字节流可以处理任何数据类型的数据,如图片音乐等,包括二进制和对象。
字符流只能读取文本数据,字符流是为了减少字节流频繁对资源进行操作,它提供了对字符串、数组等的操作,起本质上还是属于字节流

Java i/o流相关类的结构图



Reader、Writer、InputStream、OutputStream 在Java关于流的4个基本抽象类,其子类中我们经常使用的类有:

字符流中常用方法

Reader
int read() 读取一个字符,返回的是读到的那个字符,如果读取到文件的末尾处,就返回-1。
int read(char [] ch) 将读取到的字符存入指定的数组中,返回的是读到的字符个数,如果读到末尾也是返回-1。
void close() 将当前打开的流对象关闭,这实质上是在调用系统的功能,在使用完流之后,希望释放资源。
在其子类BufferedReader中,提供了更为方便的行读取。
Writer
void write(char ch) 将一个字符写入到流中。
void write(char [] ch) 写入一个字符数组到流中。
void write(String str) 写入一个字符串到流中。
void write(String str , int off , int len) / void write(String str , int off , int len) 写入字符串/字符数组的一部分到流中。
void flush() 刷新该流的缓冲,将流中的内容刷新到目标。
void close() 关闭正在占用的流资源,但是在关闭之前会先调用flush(),将数据刷新到目的地。
在其子类中BufferedWriter提供了通用跨平台的换行符方法,newLine()。
使用字符流读取文件的实例代码:
File copyFile = new File("d:\\read.txt");
		File toFile = new File("d:\\copyFile.txt");
		FileReader fr = null;
		FileWriter fw = null;
		try {
			fr = new FileReader(copyFile);
			
			fw = new FileWriter(toFile);

			char buffer[] = new char[1024]; //一般定义为1024的整数倍

			int num = 0;

			while ((num = fr.read(buffer)) != -1) {
				
				fw.write(new String(buffer, 0, num)); //读到多长的字符即写入多长的字符
				
				fw.flush();
			}

		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				fw.close();
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}






----------------------------------- android培训java培训 、期待与您交流! --------------------------------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值