Java io流

     JAVA io流分为按方向可分为:输入流,输出流。按类型可分为:字节流,字符流。输入输出都是成对出现的。

     今天就字节流讲下其中的几种读写方式,比较各种方式的效率(读写同一大小的文件,比较其所用时间)

    一.FileInputStream,FileOutputStream的read()与write()方法,每次读一个字节

public class Fileio {
	//输入输出方法
   public void readFile(String srcpath,String destpath){
	   //构造输入,输出流对象
	   try{
                       FileInputStream  in=new FileInputStream(srcpath);
	       FileOutputStream out=new FileOutputStream(destpath);
	  // 从输入文件中读字节
                         long time = System.currentTimeMillis();//获取读之前当前时间的毫秒数
                               int i=in.read();
                       while(i!=-1){
	           out.write(i);
	            i=in.read();
	        }  
            long time1 = System.currentTimeMillis();//获取读写完之后当前时间的毫秒数
	   in.close();
	   out.close();
	   System.out.println("time="+(time1-time));  //输出时间差
	   System.out.println("文件复制完成---");
	   }catch(Exception e){
		   e.printStackTrace();
	   }
	   
   }
}                   

 


    所用时间:

    二..FileInputStream,FileOutputStream的read(byte[] b, int off, int len)write(byte[] b, int off, int len)方法,每次读取一个缓冲数组,定义的数组大小为1024个字节

         

public class Fileio {
	//输入输出方法
   public void readFile(String srcpath,String destpath){
	   //构造输入,输出流对象
		   byte[]buf=new byte[1024];
	   try{
		   FileInputStream  in=new FileInputStream(srcpath);
		   FileOutputStream out=new FileOutputStream(destpath);
	  // 从输入文件中读字节
	   long time = System.currentTimeMillis();//获取读之前当前时间的毫秒数
	   int i=in.read(buf,0,buf.length);
	   while(i!=-1){
		   out.write(buf,0,i);
		  i=in.read(buf,0,buf.length);
	    }
		   
		   long time1 = System.currentTimeMillis();//获取读写完之后当前时间的毫秒数
	   in.close();
	   out.close();
	   System.out.println("time="+(time1-time));  //输出时间差
	   System.out.println("文件复制完成---");
	   }catch(Exception e){
		   e.printStackTrace();
	   }
	   
   }
}

    所用时间:

   三.利用缓冲输入输出流 BufferedInputStreamBufferedOutputStream d的read(),write()方法读取。

 

public class Fileio {
	//输入输出方法
   public void readFile(String srcpath,String destpath){
	   //构造输入,输出流对象
		   try{
		   FileInputStream  in=new FileInputStream(srcpath);
		   FileOutputStream out=new FileOutputStream(destpath);
		   BufferedInputStream bis=new BufferedInputStream(in);
		  BufferedOutputStream bos=new  BufferedOutputStream(out);
	  // 从输入文件中读字节
	   long time = System.currentTimeMillis();//获取读之前当前时间的毫秒数
		   int i=bis.read();
		   while(i!=-1){
			   bos.write(i);
			  i=bis.read();
		    }  
		   long time1 = System.currentTimeMillis();//获取读写完之后当前时间的毫秒数
	   in.close();
	   out.close();
	   bis.close();
	   bos.close();
	   System.out.println("time="+(time1-time));  //输出时间差
	   System.out.println("文件复制完成---");
	   }catch(Exception e){
		   e.printStackTrace();
	   }
	   
   }
}

   所用时间:                           

      由以上几种方式我们可以知道在字节流中,几种不同的读写方式的效率是不同的,在我们编写程序时我们要充分利用其中的各种方式以达到最大效率,字符流与此类似。              

             

你可能感兴趣的:(java,IO)