(1)Java文件流

文件在程序中是以流的形式来操作的

流:数据在数据源(文件)和程序(内存)之间经历的路径

输入流:数据从文件到内存的路径

输出流:数据从内存到文件的路径


Java流分为两类:

字节流:可以用于读写二进制文件及任何类型的文件(二进制文件:以字节byte为单位读取的)

字符流:读写文本文件,不能操作二进制文件

                    字节流                           字符流

输入        InputStream                   Reader

输出        OutputStream                Writer


字节流示例: 图片拷贝

		//先把图片读入到内存,再写入到某个文件
		//输入流
		FileInputStream fis=null;	
		//输出流   先声明
		FileOutputStream fos=null;
		
		try {
		 fis=new FileInputStream("c:\\a.jpg");
		 fos=new FileOutputStream("d:\\a.jpg");
		 
		 byte buf[]=new byte[1024];
		 //记录读取到的字节数
		 int n=0;
		 //循环读取
		 while((n=fis.read(buf))!=-1)
		 {
			 //输出到指定文件
			 fos.write(buf);
		 }	 
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
                        //关闭流一定要在finally中执行,防止出异常没有关闭		
			try{
				fis.close();
				fos.close();
			}catch(Exception e){
				e.printStackTrace();
			}
			
		}


字符流示例:

		//文件取出字符流对象
		FileReader fr=null;
		//文件写入字符流对象
		FileWriter fw=null;
		
		try{
			//创建fr对象
			fr = new FileReader("c:\\test.txt");
			//创建fw对象
			fw=new FileWriter("d:\\te.txt");
			//记录实际读取的字符数
			int n=0;
			//读入到内存中
			char c[]=new char[1024];
			
			while((n=fr.read(c))!=-1){
				String s=new String(c,0,n);
				System.out.println(s);
				fw.write(c);	
			}
		}catch (Exception e){
			e.printStackTrace();
		}finally{
			try{
				fw.close();
				fr.close();
			}catch (Exception e)
			{
				e.printStackTrace();
			}
		}

虽然字符流(char)效率高于字节流(byte),但是还不够用,所以引入缓冲字符流(String),可以一行一行读取。

缓冲字符流示例:

		BufferedReader br=null; 
		BufferedWriter bw=null;
		try{
			//先创建FileReader对象,然后再升级为BufferedReader
			FileReader fr=new FileReader("c:\\test.txt");
			br=new BufferedReader(fr);
			//创建FileWriter
			FileWriter fw=new FileWriter("d:\\aa.txt");
			bw=new BufferedWriter(fw);
			//循环读取文件
			String s="";
			while((s=br.readLine())!=null)
			{
				//输出到磁盘
				bw.write(s);
			}			
		}catch (Exception e)
		{
			e.printStackTrace();
		}finally{			
			try{
				bw.close();
				br.close();
			}catch (Exception e){
				e.printStackTrace();
			}
		}
注意:文件流不关闭,可能造成很多问题,比如:读不到








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值