黑马程序员:字符流与字节流

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ---------------------- 

IO流从操作数据的方式分为:字符流与字节流

 

字符流的缓冲区

1、缓冲区的出现提高了对数据的续写效率

2、对应的类:BufferedWriter,BufferedReader

3、缓冲区要结合流才可以使用

4、在流的基础上对流的功能进行了增强

注意:在创建缓冲区之前,必须要先有流对象

 

BufferedWriter

class  zifuliuDemo
{
	public static void main(String[] args) throws IOException
	{
		FileWriter fw=new FileWriter("buf.txt");//创建一个字符写入流对象

        BufferedWriter bufw=new BufferedWriter(fw);//为了提高字符写入流效率,加入缓冲技术
        //将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可
		bufw.write("abcde");

		bufw.newLine();//换行

		bufw.flush();//只要用到缓冲区,就要记得刷新

		bufw.close();
	}
}


 

class copyDemo
{
	public static void copy_2
	{
	   FileWriter fw=null;
	   FileReader fr=null;

	   try
	   {
		fw=new FileWriter("Democopy.txt");
		fr=new FileReader("Demo.java");
		char[] buf=new char[1024];
		int len=0;
		while((len=fr.read(buf)!=-1)
		   {
		      fw.write(buf,0,len);
		   }
	   }
	   catch (IOException e)
	   {
		   throw new RuntimeException("读写失败");
	   }
	   finally
		{
	       if(fr!=null)
			   try
			   {
				fr.close()
			   }
			   catch (IOException e)
			   {
				   throw new RuntimeException("读写关闭失败");
			   }
			  
	   }
	}
}


BufferedReader

class bufReaderDemo 
{
	public static void main(String[] args) throws IOException
	{
		FileReader fr=new FileReader("buf.txt");//创建一个读取流对象和文件相关联

		BufferedReader bufr=new BufferedReader(fr);//为了提高效率,加入缓冲技术,将字符读取流对象作为参数传递给缓冲对象的构造函数
		
		String s=bufr.readLine();
		sop("s="+s);
		bufr.close();


		//循环读取数据
		String line=null;
		while((line=bufr.readLine())!=null);
		{
		  sop(line);
		}
           public static void sop(Object obj)
		{
		   System.out.println(obj);
		   }
	}
}


字节流

InputStream 读

OutputStream 写

class  
{
	public static void main(String[] args) 
	{
		FileOutputStream fos=null;
		FileInputStream fis=null;

		try
		{
			fos=new FileOutputStream("c:\\1.bmp");
			fis=new FileInputStream("c:\\2.bmp");
			byte[] buf=new byte[1024];
			int len=0;
			while((len=fis.read())!=-1)
			{
			  fos.write(buf,0,len);
			}
		}
		catch (IOException e)
		{
			throw new RuntimeException("复制文件失败");
		}
		finally
		{
		  try
		  {
			if(fis!=null)
				fis.close();
		  }
		  catch (IOException e)
		  {
			  throw new RuntimeException("读取关闭失败");
		  }
		 try
		  {
			if(fos!=null)
				fos.close();
		  }
		  catch (IOException e)
		  {
			  throw new RuntimeException("写入关闭失败");
		  }
		
		
		}
	}
}


流操作的基本规律

1、明确源和目的地

     源:输入流InputStream,Reader

     目的地:OutputStream,Writer

2、操作的数据是否是纯文本

      是:字符流

      不是:字节流

3、当体系明确后,再明确使用的具体对象,通过设备来进行区分

      源设备:内存,硬盘,键盘

      目的设备:内存,硬盘,控制台

 

注意:通常涉及字符编码转换时,需要字符和字节之间的桥梁,用到转换流

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值