java基础巩固之IO(二)

      接上一篇,在实际的应用中,一般很少用到节点流,而是用缓冲流(一种处理流)来处理相应的数据。主要原因是缓冲流实现了对节点流的加速处理。使用缓冲流可以更快速的实现对数据的操作,何乐而不为呢。

   这里我们提一下整个IO类的的主要对应关系。如下表:

抽象基类节点流缓冲流(处理流的一种)
InputStreamFileInputStreamBufferedInputStream
OutputStreamFileOutputStreamBufferedOutputStream
ReaderFileReaderBufferedReader
WriterFileWriterBufferedWriter
 缓冲流:

   其实基本上与节点流差不多,只是多了一道工序:把节点流作为参数来创建缓冲流。所以用缓冲流来实现文件操作的步骤大致如下几步:

  1.      创建File对象
  2.     创建节点流
  3.     创建缓冲流
  4.     进行操作
  5.     关闭缓冲流(缓冲流会自动关闭对应的节点流)
  所以对应的文件拷贝的函数可以用如下代码实现:

  

public void BufferCopy(String src,String dest)
	{
		File f1=null;
		File f2=null;
		FileInputStream fis=null;
		FileOutputStream fos=null;
		BufferedInputStream bis=null;
		BufferedOutputStream bos=null;
		try {
			//第一步:创建File文件
			f1=new File(src);
			f2=new File(dest);
			//第二部,创建流
			 fis=new FileInputStream(f1);
			 fos=new FileOutputStream(f2);
			//第三部,创建缓冲流
			bis=new BufferedInputStream(fis);
			 bos=new BufferedOutputStream(fos);
			//对缓冲流操作
			byte[] b=new byte[50];
			int len;
			while((len=bis.read(b))!=-1)
			{
				bos.write(b, 0, len);
				bos.flush();
			}
		} catch (IOException e) {
			
			e.printStackTrace();
		}
		finally
		{
			//close
			if(bos!=null)
			{
				try {
					bos.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(bis!=null)
			{
				try {
					bis.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
   这里是使用BufferedInputStream和BufferedOutputStream来实现对各种文件进行操作,对应的字符型的缓冲流的BufferedReader和BufferedWriter流程基本上一致。只是操作while的时候不太一致

          String s=null;
	  while((s=br.readLine())!=null){
	    bw.writer(s);
	    bw.newLine();
	    bw.flush();}
因为是字符的操作,这里可以一行一行的读数据和写数据。

注意到一点,缓冲流的谢操作需要一个flush()刷新和newLine()来进行下一行的操作。基本上的操作流程都差不多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值