Java输入输出流与缓冲区的使用

一,Input/Output流:
将外设中的数据读取到内存中就是输入。
将内存中的数据写入到外设中就是出。
I/O流就是用来处理设备间的数据传输。用于操作流的对象都放在IO包中。
流按操作方式分为字节流和字符流。
字节流能处理所有的数据。
字符流的由来:
其实就是字节流读取文字字节数据后,不直接操作,而是先查指定的编码表,获取指定的文字,再对这个文字进行操作。简单地说即是:字符流=字符流+编码表。
输入输出流的顶层父类:
字节流:
1,InputStream

2,OutputStream

字符流:
1,Readrer:

2,Writer:
这些体系的子类都以父类名作为后缀。而且子类名的前缀就是对象的功能。
从熟悉的文字开始:字符流

将一些文字存储到硬盘上的文件夹中:
若果要操作文字数据,优先考虑字符流,而且要将数据从内存写到硬盘上,要使用字符流中的输出流Writer。硬盘数据的基本体现是文件。
			FileWriter file = new FileWriter("D:\\FileWriterDemo.txt");		//创建文件输出流
			file.write("加油");												//向文件缓冲区写入数据
			file.flush();													//将缓冲区数据写入到目标文件中
			file.write("Hello World!");										//再次向文件中写入数据
			file.close();													//关闭输出流,以后不能再利用该流输出数据


注意:
1.向硬盘输出数据需要抛出IOException异常。
2.Windows 识别的换行标志是:\r\n   故,需要文本换行时,需要在文本内部添加“\r\n”即可。
例如需要输出:
加油!
加油。
可以使用语句:file.write("加油!\r\n加油。");
如果构造函数中添加参数true,则可以实现对文件的续写功能,再次对文件进行操作时,是追加的内容而不是覆盖。
方法如下:FileWriter file = new FileWriter("D:\\FileWriterDemo.txt",true);

读取:
读取一个文本文件,将读取到的文本打印到控制台:
				//方法一:
				int ch;
				FileReader filereader = new FileReader("D:\\FileWriterDemo.txt");
				while((ch = filereader.read()) != -1){
				System.out.print((char)ch);
				filereader.close();
				}


				//方法二:
					FileReader filereader = new FileReader("D:\\FileWriterDemo.txt");
					char[] arr = new char [1024];
					int len = 0;
					while((len = filereader.read(arr)) != -1)
					System.out.print(new String(arr,0,len));
					filereader.close();


注意:
1.在创建读取流对象时,必须要明确被读取的文件。并且一定要确定该文件存在。
2.当读取到文件末尾时,如果继续读则返回-1.
将C盘的一个文本文件复制到D盘。
分别定义读写操作,从一个文件读取,使用写操作对读取的数据进行写的操作。

二,缓冲区的使用:
使用缓冲区写入文件:
为了提高写入的效率,就引入了字符流的缓冲区。
创建一个字符写入流缓冲区对象,
和指定需要缓冲的对象相关联。
使用缓冲区的写入方法将数据写入到缓冲区中。
使用缓冲区的刷新方法,将数据刷新到目的文件
使用缓冲区的光比方法,关闭相应的缓冲区,关闭缓冲区其实就是关闭流对象。
举例如下:
			FileWriter filereader = new FileWriter("D:\\BufferedDemo.txt",true);
			BufferedWriter bw = new BufferedWriter(filereader);
			bw.write("\r\n努力加油加油!");
			bw.flush();
			bw.close();


注意:写入缓冲器中含有一个特殊的方法:newLine()。作用换行。
使用缓冲区读取文件:(过程如写入)
			String str;
			FileReader fr = new FileReader("D:\\BufferedDemo.txt");
			BufferedReader br = new BufferedReader(fr);
			while((str = br.readLine()) != null)
				System.out.println(str);
			br.close();


注意:读取缓冲器中含有一个特殊的方法:readLine()。作用读取一行。不包含换行。

缓冲区无非就是定义了一个数组,并对外提供了更多的方法对数组进行访问。
其实这些方法最终操作的都是数组的角标。
缓冲的原理:
其实就是从源中获取一批数据装进缓冲区中,再从缓冲区中不断地取出一个一个的数据。

在此次取完后,再从源中继续取出下一批数据进入缓冲区。当源中的数据取完后,用-1作为结束标记。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值