2016.4.22 java笔记 Stream

来源:互联网 发布:mac访客模式怎么关闭 编辑:程序博客网 时间:2024/06/07 02:54

测试一下

/*流Stream数据流是连续不断的数据集合控制数据流的类在java.io包中*/import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.IOException;class InputDemo {static void copyFile_1(){try{FileInputStream fis = new FileInputStream("E:\\java\\m.jpg");FileOutputStream fos = new FileOutputStream("E:\\java\\1.jpg");int ch = 0;while((ch= fis.read()) != -1){fos.write(ch);}System.out.println(ch);}catch(IOException e){e.printStackTrace();}}/*上面的是最初的代码下面的代码修补了可能出现的漏洞.1.FileInputStream可能会产生找不到文件的异常,我们要catch  FileOutputStream可能产生的异常:  FileNotFoundException - 如果该文件存在,但它是一个目录,而不是一个常规文件;或者该文件不存在,但无法创建它;  抑或因为其他某些原因而无法打开   SecurityException - 如果存在安全管理器,且其 checkWrite 方法拒绝对文件进行写入访问。  所以我们直接用IOException截获异常2.在进行IO操作时,有时文件不能及时关闭,所以我们要手动关闭文件.  而关闭文件时若指针为空则会出现异常,所以先判断指针是否为空.3.如果在关闭文件时发生I/O错误,则会抛出IOException异常,我们要catch*/static void copyFile_2(){FileInputStream fis = null;FileOutputStream fos = null;try{fis = new FileInputStream("E:\\java\\m.jpg");fos = new FileOutputStream("E:\\java\\2.jpg");byte[] buffer = new byte[1024];int ch = 0;while((ch = fis.read(buffer)) != -1){fos.write(buffer,0,ch);}System.out.println(ch);}catch(IOException e){e.printStackTrace();}finally{try{if(fis!=null)fis.close();if(fos!=null)fos.close();}catch(IOException e){e.printStackTrace();}}}/*适用于大文件,比较快.*/static void copyFile_3(){FileInputStream fis = null;FileOutputStream fos = null;BufferedInputStream bis = null;BufferedOutputStream bos = null;try{fis = new FileInputStream("E:\\java\\m.jpg");fos = new FileOutputStream("E:\\java\\3.jpg");bis = new BufferedInputStream(fis);bos = new BufferedOutputStream(fos);byte[] buffer = new byte[1024];int len = 0;while((len = bis.read(buffer))!=-1){bos.write(buffer,0,len);}}catch (IOException e){e.printStackTrace();}finally{try{bis.close();bos.close();}catch(IOException e){e.printStackTrace();}}}public static void main(String[] args) {long start1 = System.currentTimeMillis();copyFile_1();long end1 = System.currentTimeMillis();System.out.println(end1-start1);long start2 = System.currentTimeMillis();copyFile_2();long end2 = System.currentTimeMillis();System.out.println(end2-start2);long start3 = System.currentTimeMillis();copyFile_3();long end3 = System.currentTimeMillis();System.out.println(end3-start3);}}


0 0